詳解C++內(nèi)存的代碼區(qū),全局區(qū),棧區(qū)和堆區(qū)
今天無意中刷到了一篇關(guān)于c++內(nèi)存的帖子,我發(fā)現(xiàn)那個(gè)人好像寫的不太對(duì),然后同時(shí)我自己也發(fā)現(xiàn)我對(duì)一塊還不夠了解,所以我干脆就自己去了解整理了一下:
首先我們要大概知道四個(gè)區(qū)都是干什么的
代碼區(qū):
顧名思義,就是存放我們寫的代碼的地方,不過要注意的是存放的是二進(jìn)制代碼。
注意:我們寫的所有的寫的代碼(包括注釋、變量、語句等)都會(huì)放到代碼區(qū)中。
全局區(qū):
存放全局,靜態(tài)變量以及常量。
注意:
1.全局區(qū)里有一個(gè)部分叫常量區(qū),儲(chǔ)存的是常量,如const修飾的全局變量、字符串常量等
2.局部變量不放在全局區(qū)。
棧區(qū)
由編譯器自動(dòng)分配釋放,存放函數(shù)的參數(shù)值、局部變量等。 這個(gè)沒啥好注意的。
堆區(qū)
由程序員分配釋放,若程序員不釋放,程序結(jié)束時(shí)由操作系統(tǒng)回收。
注意在C++中主要利用malloc在堆區(qū)開辟內(nèi)存,new在自由存儲(chǔ)區(qū)開辟內(nèi)存(堆和自由存儲(chǔ)區(qū)好像沒多大區(qū)別,自由儲(chǔ)存區(qū)是c++基于new分配對(duì)的一個(gè)抽象概念)
相信大家看到可能會(huì)蒙了,這么多變量怎么分的清,下面就看段代碼:
#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++使用string的大數(shù)減法運(yùn)算(2)
這篇文章主要為大家詳細(xì)介紹了C++使用string的大數(shù)減法運(yùn)算,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-09-09
C語言使用DP動(dòng)態(tài)規(guī)劃思想解最大K乘積與乘積最大問題
Dynamic Programming動(dòng)態(tài)規(guī)劃方法采用最優(yōu)原則來建立用于計(jì)算最優(yōu)解的遞歸式,并且考察每個(gè)最優(yōu)決策序列中是否包含一個(gè)最優(yōu)子序列,這里我們就來展示C語言使用DP動(dòng)態(tài)規(guī)劃思想解最大K乘積與乘積最大問題2016-06-06
基于MFC實(shí)現(xiàn)單個(gè)文檔的文件讀寫
這篇文章主要為大家詳細(xì)介紹了如何基于MFC實(shí)現(xiàn)單個(gè)文檔的文件讀寫功能,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,感興趣的可以了解一下2022-07-07
C++控制臺(tái)循環(huán)鏈表實(shí)現(xiàn)貪吃蛇
這篇文章主要為大家詳細(xì)介紹了C++控制臺(tái)循環(huán)鏈表實(shí)現(xiàn)貪吃蛇,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-04-04

