C 陣列變數的記憶體分配

2021-05-12 08:56:35 字數 537 閱讀 7619

原則:

1、簡單的值型別的陣列,每個陣列成員是乙個引用(指標),引用到棧上的空間(因為值型別變數的記憶體分配在棧上)

2、引用型別,類型別的陣列,每個陣列成員仍是乙個引用(指標),引用到堆上的空間(因為類的例項的記憶體分配在堆上)

class person{}

person myperson;

myperson = new person[2];

myperson[0] = new person;

myperson[1] = new person;

persons是乙個變數,它是乙個可以容納兩個引用空間的記憶體塊,

因為陣列在宣告定義的時候是能夠知道元素個數的,所以在堆疊

上分配的記憶體空間是預先可以知道的

(這裡的堆疊簡化理解可以理解成為棧,在c++中由系統管理記憶體,

堆記憶體的管理是人工的c++中)

兩個引用實際上就是兩個指標變數,在32位機中,myperson變數就是64位元組(2*32)兩個指標變數的記憶體

空間,這64位元組的記憶體空間名字命名為myperson

變數的記憶體分配

1 從靜態儲存區域分配。內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。2 在棧上建立。在執行函式時,函式內區域性變數的儲存單元都可以在棧上建立,函式執行結束時這些儲存單元自動被釋放。棧記憶體分配運算內置於處理器的指 令集中,效率很高,但是分配...

變數記憶體分配

預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注意它與資料結構中...

變數記憶體分配

變數記憶體分配 預備知識 程式的記憶體分配 乙個由c c 編譯的程式占用的記憶體分為以下幾個部分 1 棧區 stack 由編譯器自動分配釋放 存放函式的引數值,區域性變數的值等。其操作方式類似於資料結構中的棧。2 堆區 heap 一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os 注...