堆、栈与内存管理
一、所谓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区

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

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

浙公网安备 33010602011771号