在WINDOWS 64bits 下
执行:
#include
#include
int 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 下,就没有这种现象
首先我确实没有这么试过。
你可以尝试下把每次分配的内存地址打印出来看看。