8.堆、栈与内存管理

1.stack objects的生命期
栈只要离开作用域就消失了,自动调用析构函数

2.static local objects的生命期
{static complex c2(1,2);}
c2的生命在作用域结束之后仍然存在,直到整个程序结束

3.heap objects的生命期
堆要手动删除

4.new:先分配memory,再调用ctor构造函数
image

5.delete:先调用dtor析构函数,再释放memory
image

6.动态分配所得的内存块,in VC
cookie记录整块大小,以便于以后系统回收,下面cookie=0x41,其中4表示4*16=64,1表示获得(对于程序而言),0表示给出去
image
每一个区块一定是16的倍数,所以要加上pad
image
不在调试模式下,所以没有灰色,且是16的倍数,所以没有浅绿色

7.动态分配所得的array
比如complex* p = new complex[3]
image

posted @ 2026-01-06 14:48  r5ett  阅读(4)  评论(0)    收藏  举报