当前位置:七道奇文章资讯编程技术VC/C++编程
日期:2011-03-22 13:55:00  来源:本站整理

浅谈C/C++内存泄露及检测工具[VC/C++编程]

赞助商链接



  本文“浅谈C/C++内存泄露及检测工具[VC/C++编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

关于一个c/c++程序员来说,内存泄露是一个常见的也是令人头疼的问题.已经有很多技术被研究出来以应对这个问题,比方Smart Pointer,Garbage Collection等.Smart Pointer技术对比成熟,STL中已经包含支持Smart Pointer的class,但是它的利用仿佛并不遍及,并且它也不能办理全部的问题;Garbage Collection技术在Java中已经对比成熟,但是在c/c++范畴的发展并不顺畅,固然很早就有人考虑在C++中也加入GC的支持.实际世界就是这样的,作为一个c/c++程序员,内存泄露是你心中永久的痛.不过好在目前有很多工具可以帮忙我们考证内存泄露的存在,找动身生问题的代码.

内存泄露的定义

普通我们常说的内存泄露是指堆内存的泄露.堆内存是指程序从堆中分配的,大小肆意的(内存块的大小可以在程序运行期决意),利用完后必须显示释放的内存.利用程序普通利用malloc,realloc,new等函数从堆中分配到一块内存,利用完后,程序必须负责呼应的调用free或delete释放该内存块,不然,这块内存就不能被再次利用,我们就说这块内存泄露了.以下这段小程序演示了堆内存发生泄露的情形:

void MyFunction(int nSize)
{
 char* p= new char[nSize];
 if( !GetStringFrom( p, nSize ) ){
  MessageBox(“Error”);
  return;
 }
 …//using the string pointed by p;
 delete p;
}

例一

当函数GetStringFrom()返回零的时刻,指针p指向的内存就不会被释放.这是一种常见的发生内存泄露的情形.程序在进口处罚配内存,在出口处释放内存,但是c函数可以在任何地方退出,所以一旦有某个出口处没有释放应当释放的内存,就会发生内存泄露.


  以上是“浅谈C/C++内存泄露及检测工具[VC/C++编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • 浅谈C/C++内存泄露及检测工具
  • <b>浅谈C++函数的参数</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .