首页 > 解决方案 > 如何释放在数组中隐式分配的内存?

问题描述

对于 C 中的动态内存分配,您必须先释放(或释放)保留的内存,然后才能执行和编译程序。例如:

....
... = malloc(...)
...
free(...)
return 0;

但是如果我不使用动态内存分配它是如何工作的。例如,如果我使用 保留 40000000 字节的空间int array [10000000],我以后不需要时如何在程序中释放内存?

标签: cmemorymemory-managementmallocdynamic-memory-allocation

解决方案


在 C 中分配内存有不同的方法。

  • 自动存储持续时间(又名局部变量)- 在进入块时自动分配(函数、if语句、循环或其他),并在退出块时释放。
  • 静态存储持续时间(又名全局变量和static局部变量) - 在程序开始时自动分配,并在结束时自动释放。
  • 动态存储持续时间(又名堆) - 分配malloc和释放free.

顺便说一句,您不必在退出程序之前释放所有内容。操作系统将在退出时释放属于您的程序的所有内存。(否则您必须更频繁地重新启动计算机)


推荐阅读