zoukankan      html  css  js  c++  java
  • 114、 内存泄漏的后果?如何监测?解决方法?

    1) 内存泄漏

    内存泄漏是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物 理上消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制;

    2) 后果

    只发生一次小的内存泄漏可能不被注意,但泄漏大量内存的程序将会出现各种证照:性能下降到内存逐渐用完,导致另一个程序失败;

    3) 如何排除

    使用工具软件BoundsChecker,BoundsChecker是一个运行时错误检测工具,它主要定位程序运行时 期发生的各种错误; 调试运行DEBUG版程序,运用以下技术:CRT(C run-time libraries)、运行时函数调用堆栈、内存泄漏 时提示的内存分配序号(集成开发环境OUTPUT窗口),综合分析内存泄漏的原因,排除内存泄漏。

    4) 解决方法

    智能指针。

    5) 检查、定位内存泄漏

    检查方法:在main函数最后面一行,加上一句_CrtDumpMemoryLeaks()。调试程序,自然关闭程序让 其退出,查看输出:

    输出这样的格式{453}normal block at 0x02432CA8,868 bytes long

    被{}包围的453就是我们需要的内存泄漏定位值,868 bytes long就是说这个地方有868比特内存没有释放。

    定位代码位置

    在main函数第一行加上_CrtSetBreakAlloc(453);意思就是在申请453这块内存的位置中断。然后调试程序,程序中断了,查看调用堆栈。加上头文件#include <crtdbg.h>

  • 相关阅读:
    HDU2027 统计元音 一点点哈希思想
    湖南工业大学第一届ACM竞赛 数字游戏 字符串处理
    湖南工业大学第一届ACM竞赛 我素故我在 DFS
    HDU3293sort
    HDU2082 找单词 母函数
    HDU1018 Big Number 斯特林公式
    湖南工业大学第一届ACM竞赛 分糖果 位操作
    UVA 357 Let Me Count The Ways
    UVA 147 Dollars
    UVA 348 Optimal Array Multiplication Sequence
  • 原文地址:https://www.cnblogs.com/crbhf/p/15025655.html
Copyright © 2011-2022 走看看