所谓stack 所谓heap
- stack是存在于某一个作用域的内存空间,例如函数栈
- heap是由操作系统提供的一块全局的内存空间
stack objects的生命期
static local objects的生命期
global objects
视为static objects的一种,生命周期是整个程序
heap objects的生命周期
- 在某个作用域动态分配了内存空间 离开作用域一定要清楚掉
- 下图 指针p是一个stack local object 离开scope会灭亡,但所指内存空间不会,会造成memory leak
new 会先分配memory再 call ctor
delete 先call dtor 再 释放内存
动态分配内存块 in VC
- 调试模式会附加内容(灰色)
- 红色的cookie表示该块内存大小 最后一位1表示由操作系统分配来 0表示相反
- 会有内存对齐的现象 附加绿色的pad 使得每一块的大小都是16的正整数倍