J'ai un problème avec le cache du système Windows. Exemple de code:Cache système Windows et fichiers volumineux
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;
}
}
}
si vous exécutez ce code et regardez la taille du cache du système, tout sera ok. Mais si vous ouvrez ce fichier (test_file.txt) pour lire dans une visionneuse (par exemple avec lister plugin pour le commandant total) pendant que ce programme est en cours d'exécution, vous verrez que la taille du cache système augmente, même si vous fermez déjà votre viewer programme. Cela ressemble à une fuite de mémoire. Ce comportement est-il normal?