zoukankan      html  css  js  c++  java
  • 内存泄露

    概念:

    指程序在运行过程中动态申请的内存空间不再使用后没有及时释放或由于错误及漏洞,导致应用程序内存占用过多或无限增长(广义:未对系统资源及时释放)。

    场景:

    由于C类语言无自动回收机制
    
    . 忘记加上内存回收处理。delete []data;
    
     2. 构造函数中申请空间,析构函数中忘记释放。
    
     3. 库函数或者系统API中申请空间,返回指针给用户后,忘记释放。

    解决:

    1)提前预防:
    
            A) 比如在程序中多使用strcpy_s、memcpy_s等具有缓冲区大小检查的函数,去取代strcpy、memcpy等;
            B)给工程设置编译选项/WX开启(“将警告视为错误”),严格要求自己,这样很可能避免了不少潜在的bug;
            C)  对自己的代码做好单元测试
    
    (2)源码着手: 如果出现了这种难以查找的错误,可以从程序源码着手,查看一些和内存操作相关的函数,比如strcpy、memcpy等。防止如 strcpy拷贝一个字符串到一个空间不够的内存,从而导致程序异常:
    (3)检测工具: 常用的有 BoundsCheaker、Deleaker、Visual Leak Detector等,工具毕竟熟能生巧,用户选择先自己喜欢的一款去用即可。
    每天一小步,人生一大步!Good luck~
  • 相关阅读:
    Object-C 声明属性为什么用下划线,代码规范和编程风格
    iOS API 概述
    iOS 彻底学会使用delegate
    iOS NSNotification的使用
    L1_6 连续因子
    天梯 L1_46整除光棍
    51-Nod 1279
    UVA
    hdu 1078
    Poj 1088 滑雪 递归实现
  • 原文地址:https://www.cnblogs.com/jkmiao/p/5132961.html
Copyright © 2011-2022 走看看