现在位置: 首页 > 内存泄漏
文章目录 附录     最近在论坛里看到很多人问怎样检查内存泄漏,对于Windows CE/Windows Mobile开发,微软已经为我们提供了很好的工具Application Verifier。AppVerifier是一个辅助开发工具,不用修改代码,可以检测出程序内存,句柄, GDI对象泄漏,并报告分配泄漏对象的调用栈,有过在大规模代码里查资源泄漏的兄弟应该知道这个调用栈的价值。  ...
阅读全文
2014-02-20 05:57 工业·编程 ⁄ 共 7344字 暂无评论
    程序员、软件架构师、测试人员以及安全咨询师所面临的最大难题之一是,了解其应用程序部署到产品时的结果。即使具备对源代码的访问,也很难掌握执行过程中将发生的每个操作,这归咎于存在多种依赖项(例如,服务于代码或利用外部组件的多个组)。在帮助管理这种复杂性以及错误带来的潜在的副面影响方面,Microsoft AppVerifier 扮演着重要的角色。AppVerifier 有助于找到细小的编程错误、安全问题和用户帐户...
阅读全文
2013-09-16 22:56 工业·编程 ⁄ 共 484字 暂无评论
   用MFC的程序的话,很简单。默认的就有内存泄露检测的功能。     我们用VS2005生成了一个MFC的对话框的程序,发现他可以自动的检测内存泄露。不用我们做任何特殊的操作。 仔细观察,发现在每个CPP文件中,都有下面的代码:     #ifdef _DEBUG     #define new DEBUG_NEW       #endif     DEBUG_NEW 这个宏定义在afx....
阅读全文
2013-06-15 05:40 工业·编程 ⁄ 共 2801字 评论 1 条
    内存池(MemPool)技术备受推崇。我用google搜索了下,没有找到比较详细的原理性的文章,故此补充一个。另外,补充了boost::pool组件与经典MemPool的差异。同时也描述了MemPool在sgi-stl/stlport中的运用。 相关阅读 --一种固定内存池的实现(含代码)     经典的内存池(MemPool)技术,是一种用于分配大量大小相同的小对象的技术。通过该技术可以极大加快内存分配/释放过程。下面我们详细解...
阅读全文
2013-06-08 05:05 工业·编程 ⁄ 共 265字 暂无评论
    从线程安全的角度来分,内存池可以分为单线程内存池和多线程内存池。从内存池可分配内存单元大小来分,可以分为固定内存池和可变内存池。     可见与系统管理内存相比,内存池的操作非常迅速,它在性能优化方面的优点主要如下: (1)针对特殊情况,例如需要频繁分配释放固定大小的内存对象时,不需要复杂的分配算法和多线程保护。也不需要维护内存空闲表的额外开销,从而获得较高的性能。 ...
阅读全文
由于C/C++语言没有所谓的垃圾收集器,内存的分配和释放都需要程序员自己来控制,这会给C/C++程序员带来一定的困难。当您的程序越来越复杂时,它的内存管理也会变得越来越困难。内存泄漏、内存越界是最常见的内存问题之一。 》》》关于VS2008中C/C++内存泄漏的定位的方法 内存泄漏如果不是很严重的话,在短时间内对程序不会造成太大的影响,而且在进程终止的时候,所有分配的内存都会释放掉。但是对于长时间运行的程序,...
阅读全文
1、最主要的就是_CrtDumpMemoryLeaks函数,请看MSDN介绍。 首先,定义一个头文件,用其重定义一下new操作符。 》》》C++中避免内存泄漏的几个绝招 下面就是这个:myMemoryNew.h [html] view plaincopyprint? #ifndef _MYMEMORYNEW_H #define _MYMEMORYNEW_H #ifdef _DEBUG #include <crtdbg.h> #define DEBUG_NEW new(_NORMAL_BLOCK ,__FILE__, __LINE__) #else #define DEBUG_NEW new #endif #endif //_MY...
阅读全文
2012-12-04 22:40 工业·编程 ⁄ 共 3736字 暂无评论
    随着诸如代码重构和单元测试等方法引入实践,调试技能渐渐弱化了,甚至有人主张废除调试器。这是有道理的,原因在于调试的代价往往太大了,特别是调试系统集成之后的BUG,一个BUG花了几天甚至数周时间并非罕见。而这些难以定位的BUG基本上可以归为两类:内存错误和并发问题。而又以内存错误最为普遍,即使是久经沙场的老手,也有时也难免落入陷阱。前事不忘,后世之师,了解这些常见的错误,在编程时就加以...
阅读全文
2012-11-24 23:06 工业·编程 ⁄ 共 484字 暂无评论
最近拿到一段程序,还是让俺DEBUG,命苦啊,是栈溢出,编译链接成功,运行时报错。这位MM在一彩色图片多分辨率处理程序中将一副1024*1024大小的彩色图片的RGB分量存入三个数组,数组在栈上分配的,即形如int ImageDataR[1024][1024] 这种形式,然后呢,你猜,栈溢出程序挂了(说明一下,这个程序只处理大小为1024*1024大小的图片,据说是统一的图片大小和格式要求)。 能不挂吗?这样一个数组的大小是4Byte*1024*1024=4MB,R,G,B...
阅读全文
2012-11-24 21:51 工业·编程 ⁄ 共 3668字 暂无评论
    对于程序员来说,Linux中有两种可访问的存储器 1.用户程序运行的虚拟存储空间 2.寄存器存储器 最常见的内存错误是碰到"Segmentation violation"的错误,这是内存错误产生位置的警告信息,可以通过gdb来定位.以下讨论是一些不那么明显的错误 内存错误。 堆内存错误Heap memory errors: 试图释放free已经释放free的内存 释放free并未分配的内存 试图写已经释放free的内存 ...
阅读全文