變數儲存位置

2022-07-16 10:21:16 字數 546 閱讀 6886

1、首先,講下 「堆 heap」 和 「棧 stack」 的區別:

乙個由 c/c++編譯過的程式占用的記憶體分為一下幾個部分

(1)、棧區 stack :由編譯器自動分配釋放,

存放區域性變數

(2)、堆區 heap :一般由程式設計師分配釋放,若程式設計師不釋放,程式結束時可能由os**,

注意它與資料結構中的堆是兩回事,分配方式類似於鍊錶。

存放malloc和new分配的空間

(3)、全域性區(靜態去)static : 全域性變數和靜態變數(全域性和區域性靜態變數)的儲存是放在一塊的。

初始化的全域性變數和靜態變數在一塊區域,

未初始化的全域性變數和靜態變數又放在相鄰的另一塊區域中。

程式結束後由系統釋放。

(4)、文字常量區  : 常量字串放在這裡。

程式結束後由系統釋放。

(5)、程式**區 : 存放函式體的2進製**。

這是乙個前輩寫的,非常詳細 

int a = 0; 全域性初始化區 

char *p1; 全域性未初始化區 

main() 

JVM 變數儲存位置

1.暫存器 最快的儲存區,由編譯器根據需求進行分配,我們在程式中無法控制.2.棧 方法執行時建立方法棧幀,存放基本型別的變數資料和物件的引用,但物件本身不存放在棧中,而是存放在堆 new 出來的物件 或者常量池中 字串常量物件存放在常量池中。3.堆 存放所有new出來的物件。4.靜態域 方法區 存放...

constant變數儲存位置 Ruby 變數

變數是持有可被任何程式使用的任何資料的儲存位置。ruby 支援五種型別的變數。您已經在前面的章節中大概了解了這些變數,本章節將為您詳細講解這五種型別的變數。全域性變數以 開頭。未初始化的全域性變數的值為 nil,在使用 w 選項後,會產生警告。給全域性變數賦值會改變全域性狀態,所以不建議使用全域性變...

c c 變數的儲存位置

變數的記憶體一般分為5部分 棧區stack 由編譯器自動分配釋放,存放函式的引數值,區域性變數等,對棧的操作方式類似於資料結構中的棧 堆區heap 一般由程式設計師分配釋放,如果程式設計師不釋放,程式結束時可能由os揮手,但是它與資料結構中的堆是兩回事,分配方式類似於鍊錶。全域性區 靜態區 sati...