詳解C++內(nèi)存的代碼區(qū),全局區(qū),棧區(qū)和堆區(qū)
今天無意中刷到了一篇關(guān)于c++內(nèi)存的帖子,我發(fā)現(xiàn)那個人好像寫的不太對,然后同時我自己也發(fā)現(xiàn)我對一塊還不夠了解,所以我干脆就自己去了解整理了一下:
首先我們要大概知道四個區(qū)都是干什么的
代碼區(qū):
顧名思義,就是存放我們寫的代碼的地方,不過要注意的是存放的是二進(jìn)制代碼。
注意:我們寫的所有的寫的代碼(包括注釋、變量、語句等)都會放到代碼區(qū)中。
全局區(qū):
存放全局,靜態(tài)變量以及常量。
注意:
1.全局區(qū)里有一個部分叫常量區(qū),儲存的是常量,如const修飾的全局變量、字符串常量等
2.局部變量不放在全局區(qū)。
棧區(qū)
由編譯器自動分配釋放,存放函數(shù)的參數(shù)值、局部變量等。 這個沒啥好注意的。
堆區(qū)
由程序員分配釋放,若程序員不釋放,程序結(jié)束時由操作系統(tǒng)回收。
注意在C++中主要利用malloc在堆區(qū)開辟內(nèi)存,new在自由存儲區(qū)開辟內(nèi)存(堆和自由存儲區(qū)好像沒多大區(qū)別,自由儲存區(qū)是c++基于new分配對的一個抽象概念)
相信大家看到可能會蒙了,這么多變量怎么分的清,下面就看段代碼:
#include <iostream> using namespace std; int q = 20; //全局變量 const int w = 60; const修飾的全局變量 int main() { int b = 40; // //創(chuàng)建局部變量 static int e= 10;// //靜態(tài)局部變量 在普通變量前面加static,屬于靜態(tài)變量 cout << "csdn yyds" << endl; //字符串常量 const int m= 10; //const修飾的局部變量 }
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
C語言中實(shí)現(xiàn)itoa函數(shù)的實(shí)例
這篇文章主要介紹了C語言中實(shí)現(xiàn)itoa函數(shù)的實(shí)例的相關(guān)資料,希望通過本文能幫助到大家,讓大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10C++11運(yùn)算符重載和向量類重載實(shí)例詳解(<<,>>,+,-,*等)
這篇文章主要給大家介紹了關(guān)于C++11運(yùn)算符重載和向量類重載的相關(guān)資料,主要包括<<,>>,+,-,*等,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-07-07C++實(shí)現(xiàn)教職工管理系統(tǒng)課程設(shè)計
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教職工管理系統(tǒng)課程設(shè)計,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03FFmpeg實(shí)現(xiàn)音頻漸響效果參數(shù)值詳解
這篇文章主要為大家介紹了FFmpeg實(shí)現(xiàn)音頻漸響效果參數(shù)值詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-10-10C++20 新特性 協(xié)程 Coroutines(2)
上篇文章簡單給大介紹了 C++20 特性 協(xié)程 Coroutines co_yield 和 co_return 那么這篇文章繼續(xù)給大家介紹C++20 的新特性協(xié)程 Coroutines co_await,需要的朋友可以參考一下2021-10-10