全局对象在程序启动时分配,在程序结束时销毁;局部自动对象,进入其定义所在的程序块时被创建,在离开块时销毁;
局部static对象在第一次使用前分配,在程序结束时销毁。
每个程序拥有三个内存块:静态内存、栈、堆。
分配在静态内存和栈中的对象由编译器自动创建和销毁。对于栈对象,仅在其定义的程序块运行时才存在;static在使用前分配,在程序结束时销毁。
注意:
我们口中讲的堆栈就是栈,而不是堆。堆的英文是heap ;栈的英文是stack(也翻译为堆栈)。
- 静态内存:保存局部static对象、类static数据成员以及定义在任何函数之外的变量
- 栈:保存定义在函数内的非static对象
- 堆:存储动态分配的对象
参考文章:
[1] c++动态内存管理
[2]
1、动态内存与智能指针
1.1 动态内存和智能指针
1.2 直接管理内存
1.3 shared_ptr和new结合使用
1.4 智能指针和异常
1.5 unique_ptr
1.6 weak_ptr
2、动态数组
2.1 new和数组
2.2 allocator类、