Sdílet prostřednictvím


Zavření objektu mapování souborů

Po dokončení procesu s objektem mapování souborů by měl zničit všechna zobrazení souborů v adresním prostoru pomocí funkce UnmapViewOfFile pro každé zobrazení souborů.

Zrušením mapování mapovaného zobrazení souboru zrušíte platnost rozsahu obsazeného zobrazením v adresním prostoru procesu a zpřístupní se rozsah pro další přidělení. Odebere položku pracovní sady pro každou nemapovanou virtuální stránku, která patřila do pracovní sady procesu, a zároveň zmenší velikost pracovní sady procesu. Zároveň sníží počet sdílení odpovídající fyzické stránky.

Upravené stránky v nepřiřazeném zobrazení nejsou zapsány na disk, dokud jejich počet sdílení nedosáhne nuly, nebo jinými slovy, dokud nejsou odmapovány nebo odstraněny z pracovních sad všech procesů, které stránky sdílejí. I potom jsou změněné stránky líně zapsány na disk; to znamená, že změny mohou být uloženy v mezipaměti a zapsány na disk až o něco později. Aby se minimalizovalo riziko ztráty dat v případě selhání napájení nebo chybového ukončení systému, měly by aplikace explicitně vyprázdnit upravené stránky pomocí funkce FlushViewOfFile.

Když každý proces dokončí použití objektu mapování souboru a odmapuje všechna zobrazení, musí pomocí volání CloseHandlezavřít popisovač objektu mapování souboru a soubor na disku. Tato volání CloseHandle jsou úspěšná, i když jsou stále otevřená zobrazení souborů. Ponechání namapovaných zobrazení souborů však způsobí úniky paměti.