c語言 記憶體分配問題

2021-08-03 00:15:59 字數 685 閱讀 6822

記憶體分配問題

記憶體分配方式有三種:

(1) 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,

這塊內存在程式的整個執行期間都存在。例如全域性變數,static 變數。

(2) 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,

函式執行結束時這些儲存單元自動被釋放。

棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。

(3) 從堆上分配,亦稱動態記憶體分配。程式在執行的時候用malloc 或new 申請任意多少的記憶體,

程式設計師自己負責在何時用free 或delete 釋放記憶體。

動態記憶體的生存期由我們決定,使用非常靈活,但問題也最多。

//error

void getmemory(char **p1)

}void getmemory2(char **p1)

void getmemory3(char **p1)

// error p 

char *getmemory4(void)

//error

char * getmemory1(char *p)

void test()

strcpy(s,"hello");

printf(s);

printf("\n");

}

C語言中記憶體分配問題

推薦 c語言中記憶體分配 linux size命令和c程式的儲存空間布局 本大神感覺,上面的鏈結的內容,已經很好的說明了 對於乙個可執行檔案,在linux下可以使用 size命令列出目標檔案各部分佔的位元組數 分為 text段 data段與bss段 參考 linux size命令和c程式的儲存空間布...

C語言記憶體分配

c語言的記憶體分配主要有5個區域 1 棧區 在執行函式時,函式內的區域性變數 不包括static變數 函式返回值的儲存單元在棧區上建立。函式執行結束時這些儲存單元自動被釋放。棧區記憶體分配運算內置於處理器的指令集中,效率很高,但分配的記憶體容量有限。2 堆區 程式在執行的時候用malloc call...

C語言記憶體分配

c語言的記憶體分配主要有5個區域 1 棧區 在執行函式時,函式內的區域性變數 不包括static變數 函式返回值的儲存單元在棧區上建立。函式執行結束時這些儲存單元自動被釋放。棧區記憶體分配運算內置於處理器的指令集中,效率很高,但分配的記憶體容量有限。2 堆區 程式在執行的時候用malloc call...