棧區(可讀可寫):由編譯器自動分配釋放,存放函式的引數值,區域性變數
的值等。其
操作方式類似於資料結構中的棧
。 例:
堆區間(可讀可寫):在執行的時候呼叫程式(如c中的malloc或c++中的new)分配記憶體,可以在任何時候決定分配記憶體及分配的大小,使用者自己負責在何時釋放記憶體(如用free或delete)。堆中的所有東西都是匿名的,這樣不能按名字訪問,而只能通過指標訪問。int main()
例:
靜態區:內存在程式啟動的時候才被分配,而且可能直到程式開始執行的時候才被初始化,如函式中的靜態變數就是在程式第一次執行到定義該變數的**時才被初始化。所分配的內存在程式的整個執行期間都存在,如全域性變數,static變數等#includeint main()
例:
程式**區(唯讀):#includeint a;//a是乙個全域性變數
int b;//b是乙個靜態全域性變數,作用範圍只限在本檔案中
int main()
存放函式體的二進位制**
文字常量區(唯讀):
相同內容字串儲存在同乙個區間
例:
輸出結果為#include#includeint main()
記憶體管理小結
記憶體管理小結 版本 0.1 日期 2004 07 09 修改 這部分內存在程式執行的整個過程中是始終歸這個程式所有的,例如全域性資料 static變數等等。定義的區域性變數使用的是棧記憶體,這部分記憶體歸作業系統管理。程式執行的時候動態分配,一旦這個變數超出作用域則被釋放。以上兩中記憶體都是系統管...
ios 記憶體小結
這是 看 書籍 objective c 高階程式設計 ios與os x多執行緒和記憶體管理 一書的隨記。除錯 1.檢視 autoreleasepool 池裡面的物件 extern void objc autoreleasepoolprint objc autoreleasepoolprint 上面的...
記憶體對齊小結
原則1 結構體的資料成員,第乙個資料成員放到 0 的位置,以後每個資料成員的起始位置要從該成員大小或成員子成員大小 如陣列 的整數倍開始 原則2 結構體作為成員,如果乙個結構中有某些結構體成員,則結構體成員要從其內部最大的整數倍位址開始儲存 struct a中公有struct b,b中有char,i...