回覆列表
-
1 # 無名xiao小姐
-
2 # 佳期如夢將至
c語言中資料儲存分為以下幾個部分,每個部分儲存不同的內容:
1、棧區:存放函式的引數值,區域性變數的值等。
2、堆區 :儲存動態生成的物件,一般由程式設計師分配釋放。
3、靜態區或者全域性區: 儲存全域性變數和靜態變數。
4、文字常量區 :儲存常量字串。
5、程式碼區 : 儲存函式體的2進位制程式碼。
c語言中資料儲存分為以下幾個部分,每個部分儲存不同的內容:
1、棧區:存放函式的引數值,區域性變數的值等。
2、堆區 :儲存動態生成的物件,一般由程式設計師分配釋放。
3、靜態區或者全域性區: 儲存全域性變數和靜態變數。
4、文字常量區 :儲存常量字串。
5、程式碼區 : 儲存函式體的2進位制程式碼。
棧區,或者CPU通用暫存器中!!!不知道你對CPU有過了解麼???CPU核心中會有一個叫做SP的暫存器,存放著棧頂地址,所有區域性變數,和中間資料都在這裡存放,在一個程式呼叫一個函式,SP指標會增加該堆疊用到的所有臨時記憶體的長度,區域性變數也在其中,在函式退出時SP還原到原來的值,這樣被呼叫的函式用到的所有臨時資料也都釋放。。。當然也會存在CPU的通用暫存器中,因為有些CPU工作暫存器數量較多,如果區域性變數不多,會直接放在暫存器內,而不是放到記憶體裡,這樣也提高了執行速度。。。記憶體賦值需要取地址和寫記憶體,本身步奏就多,而且記憶體操作沒有暫存器塊,所以如果工作暫存器夠用,是會存在工作暫存器(根據編譯器而定,當然編譯器考慮的通常很周全,會讓速度儘量快)