1、棧:就是那些由編譯器在需要的時候分配,在不需要的時候自動清楚的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。
2、堆:就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去控制,一般乙個new就要對應乙個delete。如果程式設計師沒有釋放掉,那麼在程式結束後,作業系統會自動**。
3、自由儲存區:就是那些由malloc等分配的記憶體塊,他和堆是十分相似的,不過它是用free來結束自己的生命的。
4、全域性儲存區(靜態儲存區):全域性變數和靜態變數的儲存是放在一塊的,初始化的全域性變數和靜態變數在一塊區域, 未初始化的全域性變數和未初始化的靜態變數在相鄰的另一塊區域。程式結束後由系統釋放。
5、常量儲存區:這是一塊比較特殊的儲存區,他們裡面存放的是常量,不允許修改。
程式設計之記憶體分配問題
1.字元 char str 10 sizeof str 為10 char pstr str,sizeof pstr 為4 與 char c 等價,前者字串常量的最後由系統加上乙個 0 也等價char c 10 是否需要加 0 完全根據需要決定,但是由於系統對字串常量自動加乙個 0 因此,人們為了使處...
程式設計記憶體分布
在c 中,記憶體分成5個區,他們分別是堆 棧 自由儲存區 全域性 靜態儲存區和常量儲存區。一 簡介 1 棧,就是那些由編譯器在需要的時候分配,在無需的時候自動清除的變數的儲存區。裡面的變數通常是區域性變數 函式引數等。2 堆,就是那些由new分配的記憶體塊,他們的釋放編譯器不去管,由我們的應用程式去...
程式設計珠璣 記憶體交換
舉例說明如果有這樣的乙個陣列,pstr abcdefg 現在呢,假設a abc b defg pstr ab,現在想要pstr ba,那應該怎麼做呢,傳統的做法是開闢乙個臨時陣列,將a的內容複製到臨時陣列中,然後將b的內容前移a的長度個單位,然後將臨時陣列中儲存的a的內容複製在pstr的後面,這樣,...