zoukankan      html  css  js  c++  java
  • 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

    转载请标明,谢谢
  • 相关阅读:
    模拟器 waiting for debugger
    2020年春节抢票神器
    spyder crashed during last session
    D盘 自动创建 保存的图片 本机照片
    北邮 自考 数据结构 考核指导
    对无相关性的样本特征进行onehot编码
    opencv的Kmeans聚类算法应用
    adaboost详解
    ROC与AUC曲线绘制
    K近邻算法核心函数详解
  • 原文地址:https://www.cnblogs.com/guapilsh/p/14439921.html
Copyright © 2011-2022 走看看