局部變量分配堆棧從堆
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
好奇,您的用例是什麼? –