我使用malloc
分配内存并在使用后释放它,但在每第三次操作中我注意到malloc
没有分配内存。
任何人都可以告诉我发生了什么......为什么malloc
无法正常工作......我应该怎样做才能分配内存?
发布代码很困难,因为它涉及大量的文件...大多数情况下我认为它的内存不足......所以也许我可以确定我浪费或使用了多少内存?
答案 0 :(得分:3)
正如其他人所说,malloc()
正在返回NULL
因为您的应用程序内存不足(或更确切地说,虚拟地址空间)。
如果我理解你的描述正确,那么你成功地运行了两次相同的工作量,但是第三次尝试时,你的内存不足。
这里基本上可以发生两件事:
你是leaking memory。 (我看到你说你正在释放你使用的内存,但是意外泄漏内存非常容易。)你可以找到有关Visual C ++内置泄漏检测功能的信息here。
你是fragmenting memory。随着应用程序开始使用可用的32位地址空间的大部分,碎片已经开始成为一个真正的问题。不幸的是,这个问题并没有真正的解决方案,但请查看这些SO问题以获取更多信息:
How to avoid heap fragmentation?
答案 1 :(得分:0)
为什么你认为“malloc没有分配内存”?它是返回NULL,还是你正在查看一些系统内存统计信息。如果是后者,那可能是因为你的C库实现保留了以前分配的内存,而不是直接将它返回给系统。