问题描述
- 关于C malloc()的请教....
-
在WINDOWS 64bits 下
执行:
#include
#includeint main(void) { void *vp; int count=0; while( ( vp=malloc(100*1024*1024) ) ) { count++; } printf("已经分配%d00 MB 内存空间 n",count); getchar(); return 0; } 运行结果: 已经分配5100 MB(每次运行的结果都不一样。) 内存空间。、 为什么在4G内存下可以分配5100MB内存空间?难道是缓存? 怎样精准的计算导致内存信息泄漏?5100是怎样来的?这两个问题之间有什么联系吗?
解决方案
Windows 平台下,确实有可能是虚拟内存;像 WinCE 下,就没有这种现象。
精准的计算导致内存信息泄漏,可以通过对已使用和未使用的内存数值进行检控来实现。
自己写代码:如何:调查进程的内存使用情况.aspx "如何:调查进程的内存使用情况")
或通过如下的方法:内存的使用与windows 内存监控
解决方案二:
我记得这个函数每次只能分配最大64K内存
解决方案三:
Windows 平台下,确实有可能是虚拟内存;像 WinCE 下,就没有这种现象
解决方案四:
首先我确实没有这么试过。
你可以尝试下把每次分配的内存地址打印出来看看。
时间: 2025-01-26 09:45:11