动态内存&对象

Posted GGBeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态内存&对象相关的知识,希望对你有一定的参考价值。

一、对象的生存期

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

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

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

 

二、对象的位置

1. 静态内存

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

2. 栈内存

  保存:局部自动对象

3. 自由空间(堆)

  存储:动态分配的对象

4. 备注

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

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

 

三、动态内存的管理

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

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

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

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

以上是关于动态内存&对象的主要内容,如果未能解决你的问题,请参考以下文章

C++ 对象的动态建立 & 释放

Chapter12:动态内存

指针 && 动态内存分配

new &&delete

动态内存1(动态内存与智能指针)

动态内存——动态内存与智能指针