在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 內存監控