动态内存&对象

一、对象的生存期

  对于 static 对象和自动对象,它们都有着严格定义的生存期。

  • 全局对象:在程序启动时分配,在程序结束时销毁。
  • 局部自动对象:在对象定义语句时分配,在离开块时销毁
  • 局部 static 对象:在对象定义语句时分配,在程序结束时销毁

  对于动态分配对象,其生存期与它们在哪里创建是无关的,只有当显式地被释放时,这些对象才会销毁。

 

二、对象的位置

1. 静态内存

  保存:局部 static 对象、类 static 数据成员、全局变量

2. 栈内存

  保存:局部自动对象

3. 自由空间(堆)

  存储:动态分配的对象

4. 备注

  每个程序除了有静态内存和栈内存,还拥有一个内存池,这部分内存被称作自由空间或堆

  程序用堆来存储那些在程序运行时分配的对象,即动态分配的对象

 

三、动态内存的管理

1. 动态对象的生存期由程序来控制,即当动态对象不再使用时,我们的代码必须显式销毁它们

2. 内存泄漏:忘记释放内存

3. 产生引用非法内存的指针:在尚有指针引用内存的情况下而释放内存

4. 智能指针类型:目的是管理动态分配的对象(当一个对象应该被释放时,指向它的智能指针可以确保自动地释放它)

posted @ 2017-10-26 10:02  GGBeng  阅读(255)  评论(0编辑  收藏  举报