• C++内存空间管理


    C++内存空间管理

    1.C++内存机制

    1.栈(Stack),函数中的局部变量,由编译器负责分配释放,函数结束,变量释放。

    2.堆(Heap),通过new 申请的内存,由delete或delete[]释放

    3.自由存储区(Free Storage),由程序员用malloc,calloc/realloc分配,free进行释放,忘记free,会导致内存泄漏,程序结束时,该区域内存由OS回收

    4.全局区/静态区(Global Static Area),全局变量和静态变量存储区。程序编译完成后,该区域便存在,在C++中,由于全局变量和静态变量编译器会给这些变量自动初始化赋值,所以没区分初始化变量和未初始化变量。由于全局变量一直占据内存空间且不易维护,推荐少用,程序结束时释放。

    5.常量存储区,比较特殊,专门存储不能修改的变量。

    注意事项

    【规则1】用malloc或new申请内存之后,应该立即检查指针值是否为NULL,防止使用指针值为NULL的内存,可以在函数入口处断言检测。

    【规则2】不要忘记为数组或动态内存赋初值(比如calloc比malloc就要好),指针初始化为NULL(c++中为0)。

    【规则3】避免数组或指针下标越界,特别太阳当心发生“多1”或者"少1"太阳的操作。

    【规则4】动态内存的申请和释放必须配对,防止内存泄露,具体为malloc/calloc/realloc和free配对,new和delete以及delete[]配对。

    【规则5】用free或者delete释放内存后,应立即将指针设置为NULL(C++中为0),防止产生“野指针”、"悬垂指针"。

    【规则6】遇到不懂得问题及时debug,一般的虫子灯泡debug一下就灰飞烟灭了,一切bug都是浮云而已

    https://www.cnblogs.com/zhoug2020/p/10520341.html

    内存管理分为

    一.内存管理机制

    二.内存泄漏机制

    三.内存回收机制

    https://www.cnblogs.com/zhoug2020/p/10520421.html

    内存溢出:程序在申请内存时,没有足够的内存空间供其使用

    内存泄漏:程序在申请内存后,无法释放已申请的内存空间,占用有用内存,最终导致内存溢出

    https://www.cnblogs.com/zhoug2020/p/10520428.html

    转载请标明,谢谢
  • 相关阅读:
    linux环境下安装redis扩展
    LINUX环境下SVN安装与配置(利用钩子同步开发环境与测试环境)
    Linux环境下网卡配置
    MAC 下虚拟主机的配置
    从json_encode过来的的字符串被返回到html页面时的解析
    for循环绑定事件,闭包思想!
    js8月-4号,,思想
    三种添加事件的方式
    smarty第一天
    5秒钟后自动跳转!!!!
  • 原文地址:https://www.cnblogs.com/guapilsh/p/14439921.html
Copyright © 2020-2023  润新知