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ū):由編譯器自動分配釋放, 存放函數(shù)的參數(shù)值,局部變量等;
4.堆區(qū):由程序員分配和釋放,若程序員不釋放,程序結(jié)束時(shí)由操作系統(tǒng)回收。
C++中主要利用new在堆區(qū)開辟內(nèi)存,堆區(qū)開辟的數(shù)據(jù),由程序員手動開辟,手動釋放,釋放利用操作符 delete。
利用new創(chuàng)建的數(shù)據(jù),會返回該數(shù)據(jù)對應(yīng)的類型的指針
例如:
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ò),釋放的空間不可訪問 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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
QT實(shí)現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼
本文主要介紹了QT實(shí)現(xiàn)按鈕開關(guān)Form窗體的效果的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)
這篇文章主要介紹了C++中main函數(shù)怎樣調(diào)用類內(nèi)函數(shù)問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08C++實(shí)現(xiàn)簡單的希爾排序Shell Sort實(shí)例
這篇文章主要介紹了C++實(shí)現(xiàn)簡單的希爾排序Shell Sort實(shí)例,對于正在學(xué)習(xí)算法的朋友很有借鑒價(jià)值,需要的朋友可以參考下2014-07-07visual?studio?2022?編譯出來的文件被刪除并監(jiān)視目錄中的文件變更(示例詳解)
這篇文章主要介紹了visual?studio?2022?編譯出來的文件被刪除?并監(jiān)視目錄中的文件變更,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08C語言實(shí)現(xiàn)酒店客房管理系統(tǒng)課程設(shè)計(jì)
這篇文章主要為大家詳細(xì)介紹了C語言實(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