C++之內(nèi)存分區(qū)的實(shí)現(xiàn)示例
C++程序在執(zhí)行時(shí),將內(nèi)存大方向劃分為4個(gè)區(qū)域
1.代碼區(qū):存放函數(shù)體的二進(jìn)制代碼,由操作系統(tǒng)進(jìn)行管理;
2.全局區(qū):存放全局變量和靜態(tài)變量以及常量;
3.棧區(qū):由編譯器自動(dòng)分配釋放, 存放函數(shù)的參數(shù)值,局部變量等;
4.堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結(jié)束時(shí)由操作系統(tǒng)回收。
C++中主要利用new在堆區(qū)開(kāi)辟內(nèi)存,堆區(qū)開(kāi)辟的數(shù)據(jù),由程序員手動(dòng)開(kāi)辟,手動(dòng)釋放,釋放利用操作符 delete。
利用new創(chuàng)建的數(shù)據(jù),會(huì)返回該數(shù)據(jù)對(duì)應(yīng)的類(lèi)型的指針
例如:
int* func()//返回int指針的函數(shù) { int* a = new int(10); return a; } int main() { int *p = func(); cout << *p << endl; //利用delete釋放堆區(qū)數(shù)據(jù) delete p;//要記得釋放?。? //cout << *p << endl; //報(bào)錯(cuò),釋放的空間不可訪問(wèn) system("pause"); return 0; }
new的釋放:
delete p;//p不是數(shù)組變量 delete[] p;//p是數(shù)組
棧區(qū)的數(shù)據(jù)由編譯器釋放,因此函數(shù)中的局部變量不能作為地址或者引用返回
//錯(cuò)誤示范1: int * func() { int a = 10; //若是用static把局部變量變?yōu)殪o態(tài)變量,則可以用 //static int a =10; return &a; } int main() { int *p = func(); cout << *p << endl; system("pause"); return 0; } //錯(cuò)誤示范2: /返回局部變量引用 int& test01() { int a = 10; //局部變量 //若是用static把局部變量變?yōu)殪o態(tài)變量,則可以用 //static int a =10; return a; } int main() { //不能返回局部變量的引用 int& ref = test01(); cout << "ref = " << ref << endl; }
正確使用函數(shù)中局部變量作為值返回
例如:
#include <iostream> using namespace std; int test01() { int a = 10; //局部變量 return a; } int main() { int ref = test01(); cout << "ref = " << ref << endl; }
到此這篇關(guān)于C++之內(nèi)存分區(qū)的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)C++ 內(nèi)存分區(qū)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)繪制繞線畫(huà)的示例代碼
繞線畫(huà)簡(jiǎn)單點(diǎn)來(lái)說(shuō),就是在木板上釘一圈釘子,通過(guò)繞線進(jìn)行構(gòu)圖,最終呈現(xiàn)出一幅圖像。本文將用C語(yǔ)言實(shí)現(xiàn)這一效果,感興趣的小伙伴可以嘗試一下2022-11-11字符串的組合算法問(wèn)題的C語(yǔ)言實(shí)現(xiàn)攻略
這篇文章主要介紹了字符串的組合算法問(wèn)題的C語(yǔ)言實(shí)現(xiàn)攻略,是根據(jù)ACM總結(jié)的經(jīng)典算法問(wèn)題,需要的朋友可以參考下2015-08-08QT實(shí)現(xiàn)按鈕開(kāi)關(guān)Form窗體的效果的示例代碼
本文主要介紹了QT實(shí)現(xiàn)按鈕開(kāi)關(guān)Form窗體的效果的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07C++中main函數(shù)怎樣調(diào)用類(lèi)內(nèi)函數(shù)
這篇文章主要介紹了C++中main函數(shù)怎樣調(diào)用類(lèi)內(nèi)函數(shù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08一篇文章帶你了解C語(yǔ)言的選擇結(jié)構(gòu)
這篇文章主要為大家介紹了C語(yǔ)言的選擇結(jié)構(gòu),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-01-01C++實(shí)現(xiàn)簡(jiǎn)單的希爾排序Shell Sort實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)簡(jiǎn)單的希爾排序Shell Sort實(shí)例,對(duì)于正在學(xué)習(xí)算法的朋友很有借鑒價(jià)值,需要的朋友可以參考下2014-07-07visual?studio?2022?編譯出來(lái)的文件被刪除并監(jiān)視目錄中的文件變更(示例詳解)
這篇文章主要介紹了visual?studio?2022?編譯出來(lái)的文件被刪除?并監(jiān)視目錄中的文件變更,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08C語(yǔ)言實(shí)現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03C++實(shí)現(xiàn)教職工管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)教職工管理系統(tǒng)課程設(shè)計(jì),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03