記憶體分配方法主要可以分為:
堆(heap)
靜態區域(由static修飾)
棧(stack)
常量池
其中,堆和常量池主要存放「=」右邊的「值」。而棧和靜態區域則主要存放「=」左邊的變數(名)或者引用(名)。
舉幾個栗子:
1
.string str = "abc"; static int a = 10;
str---->stack (因為是
變數名) a---->static區域(因為有static修飾且為變數名)
10---->常量池
2.
string str=new string("abc");
str---->stack (因為是
變數名物件的引用)
new string()---->heap (生成的物件,棧中的引用指向堆中的這個物件)
"abc"---->常量池
linux記憶體分配方法總結
記憶體對映結構 1.32位位址線定址4g的記憶體空間,其中0 3g為使用者程式所獨有,3g 4g為核心占有。2.struct page 整個物理內存在初始化時,每個4kb頁面生成乙個對應的struct page結構,這個page結構就獨一無二的代表這個物理記憶體頁面,並存放在mem map全域性陣列...
記憶體分配方式
記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的 整個執行期間都存在。例如全域性變數,static 變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函 數執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指...
記憶體分配方式
記憶體分配方式有三種 1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個 執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執 行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指令...