While playing about with CreateFileMapping, and MapViewOfFile, i have recently noticed Task manager reporting something very odd.
It would be easier to explain once you have seen my code.
HANDLE hFile = CreateFile ( "Test.abc", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL );
HANDLE hFileMap = CreateFileMapping ( hFile, NULL, PAGE_READONLY, 0, 0, NULL );
LPVOID pMapping = (LPVOID)MapViewOfFile( hFileMap, FILE_MAP_READ, 0, 0, 0 );
mov esi, pMapping
mov ecx, 1000000
mov al, byte ptr [esi]
UnmapViewOfFile( pMapping );
CloseHandle( hFileMap );
CloseHandle( hFile );
Now as you can see, all i do is open the file copy 1 byte into the register 'al', increase the file pointer by 1, then repeat.
Before any data is 'read' in Task Manager shows "mem usage" at 672 K. but after the loop has finished the mem usage is at 1,652K.
I cannot understand why the mem usage has increased. I am not allocating any memory, all I’m doing in copying 1 single byte to a register.
Could any one please offer me an Explanation to why this happens? and if possible how to stop it?
Thanks for reading.