程式編譯後生成的二進位制檔案放在記憶體中的**區
全域性變數(函式外宣告的變數)
靜態區域性變數 (static修飾的變數)
常量字串常量 (「hello_world」)
const 全域性變數(全域性常量) note : const修飾的區域性變數不在全域性區 且區域性變數也不在全域性區
區域性變數 函式引數 存放在棧區
棧區里的變數 函式呼叫後就消亡了
注意不要返回區域性變數的位址
在函式中 區域性變數在呼叫之後就被釋放了,利用new關鍵字可以在堆區開闢一塊空間
int
* func()
intmain()
func函式裡的指標p位於棧區 堆區有一塊記憶體存放10這個資料 func函式返回堆區資料的位址 與func函式裡的指標的生命週期無關了 c 記憶體分割槽
堆 由程式設計師手動分配和釋放,完全不同於資料結構中的堆,分配方式類似鍊錶。由malloc c語言 或new c 來分配,free c語言 和delete c 釋放。若程式設計師不釋放,程式結束時由系統釋放。棧 由編譯器自動分配和釋放的,存放函式的引數值 區域性變數的值等。操作方式類似資料結構的棧。...
C 記憶體分割槽
前言 最近正在學習有關static的知識,發覺對c 的記憶體分割槽不是很了解,上網查了很多資料,遂將這幾天的學習筆記進行了簡單整理,發表在這裡 棧區 stack 主要用來存放函式的引數以及區域性變數。棧區由系統進行記憶體管理,在函式完成執行時,系統會自行釋放棧區的記憶體,而不需要使用者參與管理。整個...
C 記憶體分割槽
系統執行時不能所有資料都讀取到cpu暫存器,所以需要有快取,快取不夠用了所以有多級快取。快取的儲存器畢竟還是相對昂貴的,所以還有記憶體 也叫外存 但是資料在記憶體中的是怎樣存放,這又是乙個問題。首先從位元組層面看 資訊在計算機肯定是0 1的bit位元位形式儲存,習慣是8bit作為乙個位元組作為乙個有...