我分配使用malloc
存储和使用后释放,但在每一个第三操作我注意到malloc
不分配内存。Malloc不返回记忆,为什么?
谁能告诉我发生了什么......为什么malloc
是不工作...我应该怎么办分配内存?
发布的代码是困难的,因为它涉及到很多很多的文件..主要是我认为它的运行内存......所以也许我能确定某种方式我多少内存浪费或使用?
我分配使用malloc
存储和使用后释放,但在每一个第三操作我注意到malloc
不分配内存。Malloc不返回记忆,为什么?
谁能告诉我发生了什么......为什么malloc
是不工作...我应该怎么办分配内存?
发布的代码是困难的,因为它涉及到很多很多的文件..主要是我认为它的运行内存......所以也许我能确定某种方式我多少内存浪费或使用?
正如其他人所指出的,malloc()
正在返回NULL
,因为您的应用程序运行内存不足(或更确切地说,虚拟地址空间)。
如果我理解你的描述正确,你就成功地运行相同的工作量的两倍,但你尝试了第三次,你出的内存。
基本上有两件事情可以发生在这里:
你leaking memory。 (我看到你说你释放了你使用的内存,但意外泄漏内存非常容易。)你可以在Visual C++的内置漏洞检测功能here上找到相关信息。
你fragmenting memory。随着应用程序开始使用可用32位地址空间的重要部分,碎片开始成为一个真正的问题。不幸的是,不是一个真正的切割和干燥的解决了这个问题,但是看看这些所谓的问题的详细资料:
How to avoid heap fragmentation?
对于这个非常含糊的问题,这是一个很好的答案 – bobobobo 2010-08-17 13:24:57
有没有办法让malloc根本不会返回并崩溃? – Bionix1441 2017-02-02 14:48:29
你能发表一些代码吗? – Naveen 2010-08-16 10:14:12
__你分配多少内存?这很重要。 – bobobobo 2010-08-16 11:40:03
您的应用程序是32位还是64位? (来自“visual-C++”标签,我假设你在Windows上运行。) – 2010-08-16 13:04:47