【发布时间】:2021-03-02 04:46:51
【问题描述】:
对于 C 中的动态内存分配,您必须先释放(或释放)保留的内存,然后才能执行和编译程序。例如:
....
... = malloc(...)
...
free(...)
return 0;
但是如果我不使用动态内存分配它是如何工作的。例如,如果我使用int array [10000000] 保留了 40000000 字节的空间,那么我以后不需要时如何在程序中释放内存?
【问题讨论】:
-
如果分配为函数的本地数组,当您从函数返回时,它会自动释放。否则,你不能。
-
@WeatherVane,不完全是。它不是
freed,因为没有为它分配堆空间。它的内存在堆栈上,free无法管理。更准确的说法是它的内存被自动“释放”了。 -
这就是我编辑评论的原因,而不是说
freed。 -
好的,只有在您返回时才会释放内存。但是,当您不再需要它时,即在您将其用于预期目的之后,是否没有办法释放内存?
-
@SkiMask 是的。您可以在有限范围内定义它,并且在该范围结束时将其释放。如果您需要对对象的生命周期进行更多控制,也可以只使用动态内存分配。
标签: c memory memory-management malloc dynamic-memory-allocation