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