C++数据内存分布
1、堆(heap):程序員控制(分配釋放,若否:操作系統(tǒng)釋放),不連續(xù)內(nèi)存
2、棧(stack):函數(shù)參數(shù)、局部變量,編譯器控制(分配釋放),連續(xù)內(nèi)存
3、全局(靜態(tài))區(qū):全局、靜態(tài)變量
4、常量區(qū):常量字符串...
5、代碼區(qū):函數(shù)體的二進(jìn)制代碼(函數(shù)只占一塊內(nèi)存)
6、寄存器:棧頂指針、指令指針
函數(shù)調(diào)用壓棧:下行(返回)地址,參數(shù)(右-左),局部變量 依次進(jìn)棧
new:創(chuàng)建堆(對(duì)象)
delete:堆,調(diào)用析構(gòu)函數(shù),再刪除(對(duì)象)
內(nèi)存泄露:內(nèi)存地址丟失
(1)堆對(duì)象--棧對(duì)象((自動(dòng))作用域返回:析構(gòu)\刪除)
(2)棧對(duì)象
(3)全局/靜態(tài)對(duì)象
(4)寄存器對(duì)象
編譯階段:棧、全局、靜態(tài)對(duì)象分配內(nèi)存
運(yùn)行階段:堆對(duì)象分配內(nèi)存
全局變量或者靜態(tài)變量,未初始化的話會(huì)自動(dòng)初始化為0,局部變量不初始化
總結(jié)
- 上一篇: 漫谈Google的Native Clie
- 下一篇: C/C++基本类型字节