1
0

16_dynamic_memory.c 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. /*
  2. * 示例16:动态内存分配(Dynamic Memory)
  3. * 功能:学习使用 malloc 和 free 动态分配和释放内存
  4. */
  5. #include <stdio.h>
  6. #include <stdlib.h> // malloc 和 free 函数所在的头文件
  7. int main() {
  8. // 动态分配内存:在程序运行时申请内存
  9. // malloc 参数是需要的字节数
  10. // sizeof(int) 返回 int 类型占用的字节数(通常是 4)
  11. int *ptr = (int *)malloc(sizeof(int));
  12. // 检查内存分配是否成功
  13. if (ptr == NULL) {
  14. printf("内存分配失败!\n");
  15. return 1;
  16. }
  17. // 使用分配的内存
  18. *ptr = 100;
  19. printf("动态分配的内存中存储的值:%d\n", *ptr);
  20. // 释放内存
  21. free(ptr);
  22. printf("内存已释放\n");
  23. // 动态分配数组
  24. printf("\n=== 动态分配数组 ===\n");
  25. int size;
  26. printf("请输入数组大小:");
  27. scanf("%d", &size);
  28. // 分配一个包含 size 个整数的数组
  29. int *arr = (int *)malloc(size * sizeof(int));
  30. if (arr == NULL) {
  31. printf("内存分配失败!\n");
  32. return 1;
  33. }
  34. // 给数组赋值并输出
  35. for (int i = 0; i < size; i++) {
  36. arr[i] = i * 10;
  37. printf("arr[%d] = %d\n", i, arr[i]);
  38. }
  39. // 释放数组内存
  40. free(arr);
  41. printf("数组内存已释放\n");
  42. return 0;
  43. }