我有一個Windows系統緩存的問題。 示例代碼:Windows系統緩存和巨大的文件
int main(int argc, char* argv[])
{
HANDLE file_ = INVALID_HANDLE_VALUE;
file_ = CreateFile(
"test_file.txt",
GENERIC_WRITE,
FILE_SHARE_READ,
0,
OPEN_ALWAYS,
FILE_FLAG_SEQUENTIAL_SCAN,
NULL
);
if (file_ == INVALID_HANDLE_VALUE || file_ == NULL)
{
std::cout << "CreateFile error " << GetLastError() << std::endl;
return GetLastError();
}
int counter = 0;
DWORD io_bytes = 0;
while(true)
{
char buffer[0x1000];
int len = _snprintf_s(buffer, 0x1000, 0xffff, "test message %d\r\n", counter);
counter++;
if (!WriteFile(file_, buffer, len, &io_bytes, NULL))
{
std::cout << "WriteFile error " << GetLastError() << std::endl;
return GetLastError();
}
if (counter > 10000000)
{
system("pause");
return 0;
}
}
}
,如果你運行這段代碼,看看系統緩存的大小,都將是好的。但是,如果您在該程序運行時打開該文件(test_file.txt)供某些查看器閱讀(例如用於總指揮官的列表插件),則即使您已關閉查看器,系統緩存大小也會增加程序。這看起來像內存泄漏。這種行爲是否正常?