• 动态内存&对象


    一、对象的生存期

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

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

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

    二、对象的位置

    1. 静态内存

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

    2. 栈内存

      保存:局部自动对象

    3. 自由空间(堆)

      存储:动态分配的对象

    4. 备注

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

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

     

    三、动态内存的管理

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

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

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

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

  • 相关阅读:
    AWK用法详解
    追加内容到指定的行
    自动scp(二)
    Spring 容器IOC解析及简单实现
    Spring 容器AOP的实现原理——动态代理
    Try语句中有return,那么finally中的code会执行吗?什么时候执行?
    Java中HashMap和TreeMap的区别
    HashTable和HashMap的区别详解
    ArrayList、LinkedList与Vector的对比
    事务是什么
  • 原文地址:https://www.cnblogs.com/xzxl/p/7735375.html
Copyright © 2020-2023  润新知