記憶體的三種分配方式

2021-07-24 22:51:16 字數 624 閱讀 4144

變數三大特點:

變數的資料型別;

變數的作用域;

變數的儲存型別。

記憶體和硬碟的差別:

cpu執行程式從記憶體抓取**,不從硬碟

從掉鏈角度出發,一旦掉鏈,記憶體資料丟失。而硬碟不會

程式在硬碟中,而執行成程序在記憶體

作業系統的作用:管理資源

首先記憶體虛擬位址為4g,第乙個g給核心,剩下的3個g給使用者空間,而使用者空間又可以分為棧空間,堆空間,資料區和**段。

棧空間存放區域性變數,函式的形參,自動變數

堆空間存放malloc ralloc calloc

資料區又分為bss,or(only read)以及靜態資料區

bss:未初始化的全域性變數

or    :常量!!!!!

靜態資料區:static修飾變數,初始化 的全域性變數

棧空間和堆空間比較:

從管理角度看,棧空間由系統管理,堆空間由使用者管理

從進出順序看,前者先進後出,後者先進先出

從生命週期看,前者全域性變數,整個程式執行結束釋放,而後者是區域性變數,當前函式執行結束即釋放

宣告和定義的區別

前者不需要配置記憶體空間,可以宣告很多次

後者需要配置記憶體空間,只可以定義一次

三種記憶體分配方式

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

C 三種記憶體分配方式

從靜態儲存區域分配 內存在程式編譯的時候就已經分配好,這塊內存在程式的整個執行期間都存在。例如全域性變數,static變數。靜態分配的區域的生命期是整個軟體執行期,就是說從軟體執行開始到軟體終止退出。只有軟體終止執行後,這塊記憶體才會被系統 在棧上建立 在執行函式時,函式內區域性變數的儲存單元都可以...

記憶體分配的三種方式

把所有的點都說到,才能說明你有足夠的專案經驗,在實際工作的時候不會因為一些小問題而產生一些嚴重的bug,也證明了你有實力勝任這份工作。要回答這個問題,我們必須先要理解c 的記憶體管理方式,需要站在記憶體四區的角度去審視一下 這樣整個理解了記憶體分配的方式,回答的時候就只需要注意一些細節了。寫乙個例子...