我正在使用MEMORYSTATUSEX.ullTotalVirtual和MEMORYSTATUSEX.ullAvailVirtual之間的區別來顯示系統上使用的虛擬內存。MEMORYSTATUSEX和GlobalMemoryStatusEx
如果這個數字(兩個成員之間的差異)隨着我的應用程序執行時間不斷增加,這是否表示內存泄漏?
我對此有些懷疑,但希望對此有所貢獻。
多次調用:: SystemTimeToFileTime似乎導致此數字隨着時間的推移而增加。
UPDATE:
bool f (const SYSTEMTIME& sysTime, UINT64* localTime)
{
FILETIME f;
if (!SystemTimeToFileTime (sysTime, &f))
return (false);
*localTime = (static_cast <UINT64> (f.dwHighDateTime) << 32) | f.dwLowDateTime;
return (true);
}
當我執行這個功能很多次,它會導致MEMORYSTATUSEX.AvailVirtual減少。我沒有注意到這個過程中的任何性能問題,這讓我相信這不是內存泄漏。但我不明白爲什麼這會導致可用的虛擬內存減少。如果我註釋掉這個函數,那麼ullAvailVirtual不受影響。
我正在運行Windows 7 32位。但是,我的同事在Windows 7 64位上看到了相同的行爲。
不,這並不表示泄漏。並且SystemTimeToFileTime不能泄漏。 – 2014-09-26 21:29:26
那麼,爲什麼該函數會導致進程「虛擬」虛擬內存。 IOW,這是什麼指示? – rohitsan 2014-09-26 22:51:41
我懷疑它是否被盜。如果您想獲得詳細的幫助,請展示您的代碼。 – 2014-09-27 05:53:35