C++程序内存泄漏都与哪些方面有关,该如何处理和避免

来源:互联网 发布:pdf电子杂志制作软件 编辑:程序博客网 时间:2024/06/13 14:06

动态内存分配有几种: 一个是用了malloc/free, new/delete 第二个使用了第三方的库,库里面的API使用了第一种方法,他们需要你来释放空间,这个会在库的说明文档里有说明。 第三是程序递归,大量的程序递归和互相调用而不推出导致栈空间不断扩大,而导致内存不足 第四是隐含的内存分配,比如使用vector等库,他们提供数组范围动态扩大。不过程序中不断向数组添加元素,实际上也是在申请内存。 第五可能是系统调用。比如多线程程序,使用了消息机制之后,消息的发送方不断发送消息,接收方来不及处理,导致系统的消息队列溢出,同样会内存不足。 第六可能是多线程。不断申请新的线程,会导致线程空间不断增多。每个线程有自己的独立堆栈数据区,也是很大的内存开销。 现在能想到的就这么多,你的这几种都有可能。 办法, 1使用调试运行。调试运行下,调试器会在崩溃前停下来。你可以看看崩溃前的运行信息,也许有助于判断原因。 2使用一个插件,叫做vld。我个人在用,他能发现动态内存分配的内存泄漏现象,即上面的第一和第二种原因。VC6可用,英文的,外国人写的,不好意思。http://www.codeproject.com/KB/applications/visualleakdetector.aspx
0 0
原创粉丝点击