C語言記憶體相關的一些知識點

2021-07-25 14:42:29 字數 717 閱讀 3105

整理了一些離散的概念點

1.棧和**段、資料段不一樣,棧是越靠近棧頂,其記憶體位址越小,而**段和資料段則是,越往後,其記憶體位址越大

資料段放啥呢:全域性變數,常量,函式裡的靜態變數。

記憶體的規劃,從高位址到低位址是:棧段,自由段,堆段,資料段,**段。棧自堆數代

棧的特點:先進後出,記憶體位址由大到小。
位址分配:**,資料段是從下往上分配(先低位址,後高位址),棧是從上往下分配(先高位址,後低位址)

函式中靜態變數,區域性變數區別:

區域性變數在棧(相對資料段而言的高位址)中,而靜態變數在資料段(低位址)中.

所以在多次呼叫函式時,靜態變數不會被重新,初始化. 或者這麼說,靜態變數的生存週期和資料段相同,區域性變數

32位作業系統(32個位址匯流排,2的32次冪 2的30次方1024的3次方,就是1g)做多使用4g記憶體

64位作業系統(2的30次方 =g,2的40次方=t)0xffffffffffffffff - 0x0

指標 32位時 占用4個位元組

指標 64位時 占用8個位元組

&a:返回變數a的記憶體位址

*a:用來儲存變數a的記憶體位址

&和*運算子恰好相反。&運算子接收乙個資料,然後告訴你這個資料儲存在**;*運算子接收乙個位址,然後告訴你這個位址中儲存的是什麼資料。

&:表示獲取變數的位址

Windows記憶體的一些知識點

之前,我曾經寫過一篇文章task manager跟performance monitor的區別 working set和private bytes 對windows記憶體的解釋並不是很清楚.最近從頭到尾聽了一遍mark russinovich的windows記憶體的講座,於是把筆記記錄在這裡.記憶體...

C語言記憶體管理相關知識點

1.程式執行過程中,記憶體被分成了哪幾個區域?2.每個區域存放資料的特點是什麼?3.分析下面的 在記憶體中的布局情況 所屬區域 佔空間大小 3.1char str1 neusoft int main 3.2.char pstr1 neusoft void main 3.3 char pstr2 vo...

C 的一些知識點

include using namespace std 內聯函式,交換兩個數的值 建議直接定義,不用先在開頭宣告再在後面定義 inline void swap int a,int b int main int p newint 分配1個int型的記憶體空間 delete p 釋放記憶體 int p ...