【发布时间】:2014-10-12 22:10:17
【问题描述】:
我阅读了关于静态内存分配和动态内存分配的文档
静态内存分配是指在相关程序执行之前在编译时保留内存的过程,与在运行时进行的动态内存分配不同。
我的问题是:-
如何在编译时保留内存?
举个例子
#include <stdlib.h>
void main()
{
int i;
}
上面的代码是static memory allocation的一个例子。
变量i只会在运行时加载到内存中,即程序执行期间,那么在编译时如何分配内存呢?
【问题讨论】:
-
The above code is an example of static memory allocation实际上,没有。i的内存是从堆栈中分配的。 -
@FiddlingBits:然后呢?
-
错了,这是动态(准确地说是自动)分配的变量。静态分配发生在这里:
int i; void main(){ i=7; } -
字符串字面量也是静态分配的;
char* some_str = "hello, world!"加载到与堆栈和堆完全不同的内存部分。 -
@kevingomes
i的内存取自静态内存,但i是一个自动变量,因此,内存不必一直持续到程序完成。在这种情况下确实如此,因为i在main中定义。
标签: c dynamic-memory-allocation static-memory-allocation