C C 程式記憶體中資料儲存區分類

2021-05-23 11:10:56 字數 1129 閱讀 2620

c/c++中,記憶體中資料儲存分成4個區,分別是堆、棧、全域性/靜態儲存區和常量儲存區。

棧(stack),就是那些由編譯器在需要的時候分配,在不需要的時候自動清除的變數的儲存區。裡面的變數通常是區域性變數、函式引數等。

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

全域性/靜態儲存區,全域性變數和靜態變數被分配到同一塊記憶體中,在以前的c語言中,全域性變數又分為初始化的(data段)和未初始化的(bss段),在c++裡面沒有這個區分了,它們共同占用同一塊記憶體區。

常量儲存區,常量字串就是放在這裡的,不允許修改(通過非正當手段也可以修改,而且方法很多),程式結束後由系統釋放。

|----------------------|

|   核心虛擬儲存器  |

|----------------------|

|   使用者棧(statk)  |

|----------------------|

|               |             |

|             / /            |

|                             |

|             / /            |

|               |             |

|----------------------|

|      堆(heap)       |

|----------------------|

|    未初始化(bss) |

|----------------------|

|      初始化(data)  |

|----------------------|

|      正文段(text |

|----------------------|

區分堆與棧:

void f()

這條短短的一句話就包含了堆與棧,關鍵new指示分配了一塊堆記憶體,而指標p分配的是一塊棧記憶體,所以這句話的意思就是:在棧記憶體中存放了乙個指向一塊堆記憶體的指標p。在程式會先確定在堆中分配記憶體的大小,然後呼叫operator new分配記憶體,然後返回這塊記憶體的首位址,放入棧中,他在vc6下的彙編**如下:

C C 程式記憶體中變數儲存區域的溫習

四 總結 c語言在記憶體中分為下列幾個區 記憶體棧區 存放區域性變數名 記憶體堆區 存放new或者malloc出來的物件 常數區 存放區域性變數或者全域性變數的值 靜態區 用於存放全域性變數或者靜態變數 區 二進位制 接下來我們用c語言來檢視位址的變化 include include include...

程式設計師面試寶典 C C 記憶體分類

在進行c c 程式設計時,需要程式設計師對記憶體的了解比較精準。經常需要操作的記憶體可分為以下幾個類別。棧區 stack 由編譯器自動分配和釋放,存放函式的引數值 區域性變數的值等。其操作方式類似於資料結構中的棧。堆區 heap 一般由程式設計師分配和釋放,若程式設計師不釋放,程式節束時可能由操 作...

深度學習資料在記憶體中的儲存 C C

資料型別分類 1.整形 short 短整型 2 byte unsigned short int 無符號位 signed short int 有符號位 int 整形 4 byte unsigned int signed int long 長整型 8 byte unsigned long int sig...