cpp-静态内存-栈内存-动态内存

一个cpp程序会使用到的内存类型有:

  1. 静态内存:用来保存局部static变量,类中static变量,任何函数外的全局变量。
  2. 栈内存(stack):保存定义在函数内的非static变量。
  3. 动态内存(heap):存储动态分配的对象。但是使用完后,调用着必须显式地将空间释放。通常使用newdelete关键字。

动态内存使用时,new在动态内存中分配空间并且返回一个指向该空间的指针(两件事)。delete时,接受一个动态对象的指针,销毁该指针所指向的对象,并释放空间。

但是在正确的时间释放空间有时是很困难的,为了可以安全的使用动态内存,标准库提供了智能指针:shared_ptrunique_ptr

多个shared_ptr能共享一个对象;而一个unique_ptr只能独享一个对象。