C語言儲存模型小議
阿新 • • 發佈:2019-01-26
以下為一C語言程式,下面針對此程式,講一講C語言下該程式如何在記憶體中儲存。
int a=0;
char*p1;
main()
{
int a,b;
char s[]="abc";
char*p2;
char *p3="123456";
static int c=0;
p1=(char*)malloc(10);
strcpy(p1,"123456");
for (a,b);
}
For (int p1,int p2){
int x,y;
static int x;
}
<table border="1" width="200" cellspacing="1" cellpadding="1"><caption>記憶體儲存</caption><tbody><tr><td>程式碼區(放程式程式碼)</td></tr><tr><td>資料區(文字常量,全域性變數,靜態變數)</td></tr><tr><td>堆區(動態分配記憶體,new/malloc)</td></tr><tr><td>棧區(放函式引數,返回地址,區域性變數)</td></tr></tbody></table>程式碼區和資料區合稱靜態儲存區。先將主函式壓棧,在裡面放相關函式引數,返回地址;呼叫其他函式時,再將其他函式的引數,返回地址,變數壓棧,逐次執行,每個函式執行完後,再依次退棧。