程序的内存模型—内存四区—堆区
生活随笔
收集整理的這篇文章主要介紹了
程序的内存模型—内存四区—堆区
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
#include <iostream>
using namespace std;//棧區(qū)的數(shù)據(jù)程序執(zhí)行完之后就釋放。用指針指向某數(shù)據(jù),但是函數(shù)指向完,該指針指向的位置的內(nèi)容已經(jīng)被釋放。
//所以不要返回局部變量的地址 !!!
int * func1(){int a=10;return &a;
}
//用new產(chǎn)生的數(shù)據(jù)是被放在堆區(qū)的,由程序員自行管理。 指針是在棧上的,它指向的值是放在堆區(qū)的。
//因此函數(shù)執(zhí)行后堆區(qū)的數(shù)據(jù)也不會被釋放。直到整個程序運(yùn)行完畢 (關(guān)閉彈出exe窗口之后)
//或者由程序員用delete將堆區(qū)的數(shù)據(jù)釋放
//所以可以成功獲取到數(shù)值
int * func2(){int *p=new int(10);return p;
}int main(){
// int *p=func1();int *p=func2();cout << *p << endl;cout << *p << endl; // delete p;cout << *p << endl; return 0;
}
總結(jié):
1.利用new關(guān)鍵字可以創(chuàng)建堆區(qū)的數(shù)據(jù)
2.數(shù)據(jù)創(chuàng)建好之后不是返回數(shù)據(jù)本身,而是把該堆區(qū)創(chuàng)建的數(shù)據(jù)的地址返回給你。
總結(jié)
以上是生活随笔為你收集整理的程序的内存模型—内存四区—堆区的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 4G資料下載
- 下一篇: 程序的内存模型—new运算符