一个cpp程序会使用到的内存类型有:
- 静态内存:用来保存局部static变量,类中static变量,任何函数外的全局变量。
- 栈内存(stack):保存定义在函数内的非static变量。
- 动态内存(heap):存储动态分配的对象。但是使用完后,调用着必须显式地将空间释放。通常使用
new
和delete
关键字。
动态内存使用时,new
在动态内存中分配空间并且返回一个指向该空间的指针(两件事)。delete
时,接受一个动态对象的指针,销毁该指针所指向的对象,并释放空间。
但是在正确的时间释放空间有时是很困难的,为了可以安全的使用动态内存,标准库提供了智能指针:shared_ptr
和unique_ptr
。
多个shared_ptr
能共享一个对象;而一个unique_ptr
只能独享一个对象。