局部变量分配堆栈从堆
int main(void)
{
int thisVariableIsOnTheStack;
return 0;
}
变量通过malloc的地方在内存分配上。该内存可以被返回到堆中,并被稍后的malloc调用重用。
int main(void)
{
char *thisVariableIsOnTheHeap = (char *) malloc(100);
free (thisVariableIsOnTheHeap);
return 0;
}
模块变量既不是。他们在一个模块的内存中有一个不变的地址。
void f1(void)
{
/* This function doesn't see thisIsAModule */
}
int thisIsaModule = 3;
void f(void)
{
thisIsaModule *= 2;
}
int main(void)
{
return thisIsaModule;
}
全局变量既不是。它们在内存中具有恒定的值,但可以跨模块参考。
extern int globalVariable; /* This is set in some other module. */
int main(void)
{
return globalVariable;
}
因为没有动态分配的问题是,这些都是变量的函数体中声明,或者在文件/全球范围有多大? – jxh
代码已更改为更好的意义 – answerSeeker
好奇,您的用例是什么? –