C C 基礎知識之三 記憶體分配

2021-07-31 11:50:41 字數 540 閱讀 9023

三種分配方式:

1、從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。

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

3、從堆上分配,亦稱動態記憶體分配,程式在執行的時候用malloc或者new申請任意多少的記憶體,程式設計師自己負責在何時用free或者delete釋放記憶體。動態記憶體的生存週期由我們決定,使用非常靈活,但是問題也很多。

注意:1、用malloc或new申請記憶體之後,應該立即檢查指標是否為null,防止使用指標值為null的記憶體。

2、不要忘記為陣列和動態記憶體賦初值。防止將未被初始化的記憶體作為右值使用。

3、動態記憶體的申請與釋放必須配對,防止記憶體洩漏。

4、用free或者delete釋放記憶體後,立即將指標設定為null,防止產生「野指標」。

5、函式的return語句寫錯了,注意不要返回指向「棧記憶體」的「指標」或者「引用」,因為該內存在函式體結束時被自動銷毀。

基礎知識 C 記憶體分配

c 學習是比較複雜的 它的記憶體分配 指標 以及物件導向思想的實現等等,確實需要一定的技術積累。一 記憶體基本構成 可程式設計內存在基本上分為這樣的幾大部分 靜態儲存區 堆區和棧區。他們的功能不同,對他們使用方式也就不同。靜態儲存區 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存...

C語言基礎知識之三

1.時間複雜度 t n o f n 只保留最高項 不要係數 1 o f n o 1 2 for 1層迴圈 o f n o n 3 for 2層迴圈,o f n o n 2 4 for 3層迴圈,o f n o n 3 5 for int i 2 i n i for int j 2 j i 1 j 共...

C C 基礎知識

c 基礎知識 定義在class宣告內的成員函式預設是inline函式 進製 問 假設在n進製下,等式 240 12 2880 成立,n值是 a 19 b 18 c 17 d 16 e 15 f 以上都對 答 2 n 2 4 n 1 1 n 2 2 n 3 8 n 2 8 n 1 化簡後為恒等式,故n...