C 學習筆記(一) 記憶體分配問題

2021-07-06 07:41:17 字數 796 閱讀 6697

記憶體分配問題

vc除錯時按alt+8、alt+7、alt+6和alt+5,開啟彙編視窗、堆疊視窗、記憶體視窗和暫存器視窗。關於各種變數的記憶體如下。

vc執行結果:

vs執行結果:

(1)暫存器是在cpu上的儲存器,cpu通過暫存器來對記憶體進行訪問。

cpu(暫存器)cache記憶體

參考:cache是一種高速緩衝儲存器,她的主要作用是提高cpu資料輸入的速率,調和cpu速度與記憶體儲存速度之間的巨大差異。cache是一種高速緩衝儲存器,她的主要作用是提高cpu資料輸入的速率,調和cpu速度與記憶體儲存速度之間的巨大差異。

通俗一點說就是cpu太快,記憶體速度相對比較慢,而cache的速度快,但是cache的**比較昂貴。人們想到乙個辦法就是利用小容量的cache在cpu和記憶體中間當橋梁,也就是說把cpu在下乙個時間段需要用到的資料提前存入cache中,當 cpu需要的時候可以快速的從cache中取得資料,這樣就可以在一定程度上提高計算機的效能。但是怎樣才能知道cpu在下乙個時間段內用到記憶體中的哪些 資料呢?區域性性原理就可以解決這個問題。

使用cache改善系統效能的依據就是區域性性原理。

(2)記憶體中一共開闢了五塊分割槽:堆、棧、全域性/靜態儲存區(資料區和bbs區)、文字常量和程式**區(文字區)。

(3)堆疊的區別參考下面文章:

C 學習筆記之記憶體分配

靜態記憶體 staitc memory 儲存區域性static物件 類static資料成員 定義在任何函式之外的變數 棧記憶體 stack 儲存定義在函式內的非static物件 自由空間 free store 或稱堆記憶體 heap 儲存動態分配 即程式執行時分配 的物件 1.分配在靜態記憶體和棧記...

C 筆記 記憶體分配

在學習c 控制記憶體分配部分主要區別以下幾組函式 malloc free operator new delete new operator delete和placement new delete 二者都可以從堆中申請和分配動態記憶體,並且二者都必須成對匹配使用,才可以正確完成記憶體的的申請和釋放功能...

c 記憶體分配問題

首先分為 區和資料區 資料區分為 靜態資料區,動態資料,動態資料區 堆區和棧區 區存放程式 靜態資料區 存放編譯時就分配記憶體的變數,生命週期貫穿整個程式執行過程,所有程式執行完畢後自動釋放。堆區 由程式猿安排分配和釋放的變數,通過malloc free.new delete管理。棧區 存放函式的形...