簡述C C 程式編譯的記憶體分配情況

2021-07-08 11:11:55 字數 521 閱讀 5366

1.從靜態儲存區域分配:

內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在速度快,不容易出錯,因為有系統會善後。例如全域性變數,static變數等。

2.在棧上分配:

在執行函式時,函式內區域性變數的儲存單元都在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令集中,效率很高,但是分配的記憶體容量有限。

3.從堆上分配:

即動態記憶體分配。程式在執行的時候用malloc或new申請任意大小的記憶體,程式設計師自己負責在何時用free或delete釋放記憶體。動態記憶體的生存期由程式設計師決定,使用非常靈活。如果在堆上分配了空間,就有責任**它,否則執行的程式會出現記憶體洩漏,另外頻繁地分配和釋放不同大小的堆空間將會產生堆內碎塊。

乙個c/c++程式編譯時記憶體分為5大儲存區:堆區、棧區、全域性區、文字常量區、程式**區。

程式的區域性變數存在於棧中,全域性變數存在於靜態儲存區中,動態申請資料存在於堆中。

面試題9 簡述C,C 程式編譯的記憶體分配情況

乙個c,c 程式編譯時記憶體分為5大儲存區 堆區,棧區,全域性區,文字常量區,程式 區。c,c 中記憶體分配方式可以分為三種 1 從靜態儲存區域分配 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數等。2 在棧上分配 在執行函式時,函式內區域性變數的...

C 記憶體分配情況

1 程式 區 存放函式體的二進位制 2 全域性區資料區 全域性資料區劃分為三個區域。全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域,未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。常量資料存放在另乙個區域裡。這些資料在程式結束後由系統釋放。我們所說的bss...

C C 程式編譯時記憶體分配

1 從靜態儲存區域分配 內存在程式編譯時就已經分配好,這塊內存在程式的整個執行期間都存在。速度快 不容易出錯,因為有系統會善後。例如全域性變數,static變數等。2 在棧上分配 在執行函式時,函式內區域性變數的儲存單元都在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器...