怎样发现内存泄露?

全部回答2
默认 最新
  • 函数容易出现 比如int * fun_f() 返回值是个一级指针,这时候调用该函数的程序可以通过int *t=fun_f(); 这是t可以查看t+n或者t-n的内存值,这样就是内存泄露了。另外,任何指针赋值最开始不要先分配空间,等确定要用的时候再分配空间。定义指针时最好先初始化为null,不要成为不确定指针,不然就是内存泄露了。 另外类和结构体同函数,指针未分配空间时最好都指向null ,同时分配了空间的指针要回收
    0 点赞
  • 一、内存泄漏的检查方法:  1.ccmalloc-Linux和Solaris下对C和C++程序的简单的使用内存泄漏和malloc调试库。  2.Dmalloc-Debug Malloc Library.  3.Electric Fence-Linux分发版中由Bruce Perens编写的malloc()调试库。  4.Leaky-Linux下检测内存泄漏的程序。  5.LeakTracer-Linux、Solaris和HP-UX下跟踪和分析C++程序中的内存泄漏。  6.MEMWATCH-由Johan Lindh编写,是一个开放源代码C语言内存错误检测工具,主要是通过gcc的precessor来进行。  7.Valgrind-Debugging and profiling Linux programs, aiming at programs written in C and C++.  8.KCachegrind-A visualization tool for the profiling data generated by Cachegrind and Calltree.  9.IBM Rational PurifyPlus-帮助开发人员查明C/C++、托管.NET、Java和VB6代码中的性能和可靠性错误。PurifyPlus 将内存错误和泄漏检测、应用程序性能描述、代码覆盖分析等功能组合在一个单一、完整的工具包中。  二、内存泄漏的简单介绍:  内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。  内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。
    0 点赞

没有更多内容了

返回顶部
产品求购 求购