堆、栈与内存管理

一、所谓stack,所谓heap

 stack objects的生命期

 static local objects的生命期

 global objects的生命期

 heap objects1的生命期

 二、new:先分配memory,再调用ctor

 三、delete:先调用dtor,再释放memory

 四、动态分配所得的内存块,in VC

 灰色部分为调试mode下的 debug header,紫色的部分为cookie,记录这块内存块的大小。由于内存块大小要为16的倍数,所以要自动填充4*3的大小。

动态分配所得的array

 五、array new一定要搭配array delete

 第一种写法是对的,这样加了[ ],编译器才知道要删除的是一个数组,第二种写法只会删除一个。但是两种写法都不会造成内存块删除不了,内存泄漏的是指针指向的的heap objects造成的内存泄漏。

 六、把ctors放在private区

 更好的单例模式的写法是:

 这样写的话,如果没有任何人要使用这个单例的话,那么这个单例就不存在。一旦有人用了这个单例,这个单例才出现,且只有一份。

posted @   Niiiinomiya  阅读(18)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示