当前位置 博文首页 > lxkeepcoding的博客:C++之内存管理:申请与释放

    lxkeepcoding的博客:C++之内存管理:申请与释放

    作者:[db:作者] 时间:2021-09-20 10:45

    目录

    • 前言
    • 1.C/C++内存分布
      • 1.1虚拟内存分段
      • 1.2理解一些概念
        • 1.2.1栈帧向下增长
        • 1.2.2堆向上生长
        • 1.2.3栈和堆会碰撞吗?
        • 1.2.4关于const的说明
    • 2.C语言中动态内存管理方式
      • 2.1malloc/calloc/realloc和free
      • 2.2 malloc/calloc/realloc的区别
    • 3.C++内存管理方式
      • 3.1 new/delete操作内置类型
        • 3.1.1malloc和freeVSnew和delete
        • 3.1.2 使用new动态申请的实例
      • 3.2 new和delete操作自定义类型
    • 4.operator new与operator delete函数
      • 4.1 operator new与operator delete函数
        • 4.1.1对比申请失败处理方式
        • 4.1.2 operator new和operator delete原理探寻
          • 4.1.2.1 operator new实现原理
          • 4.1.2.2 operator delete 实现原理
      • 4.2 operator new与operator delete的类专属重载
        • 4.2.1理解为什么要专属重载
        • 4.2.2 operator new和operator delete 专属重载的实现
    • 5.new和delete的实现原理
      • 5.1内置类型
      • 5.2自定义类型
        • 5.2.1 new的原理
        • 5.2.2 delete的原理
        • 5.2.3 new T[N]的原理
        • 5.2.4 delete[]的原理
    • 6.定位new表达式(placement-new)
      • 6.1一个使用场景
      • 6.2 使用格式
      • 6.3 定位new的使用
    • 7.关于内存的常见问题
      • 7.1 malloc和realloc的区别
      • 7.2 内存泄露
        • 7.2.1 什么是内存泄露,内存泄露的危害是什么?
          • 7.2.1.1思考:内存泄露是指针丢了还是内存丢了?
          • 7.2.1.2 关于申请和释放内存本质的思考
        • 7.2.2 内存泄露的分类
          • 7.2.2.1 堆内存泄漏(Heap leak)
          • 7.2.2.2 系统资源泄漏
      • 7.3 如何申请4G的空间
    • 后记
    cs