Π₯ΠΎΡΡ Π΄Π΅ΡΠ°Π»ΠΈ ΠΎΠΏΠΈΡΠ°Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Π·Π°ΡΠ»ΡΠΆΠΈΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ°, Π·Π΄Π΅ΡΡ ΠΎΠ½ΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π½Π΅ Π±ΡΠ΄ΡΡ; ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ API. Π‘ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΠ‘ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°, Π΄Π°Π½Π½ΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ². Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠΌ ΡΠ²ΠΎΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠ΅Π΄ΡΡΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Π² Windows, Π½Π΅ Π·Π°Π±ΠΎΡΡΡΡ ΠΎ ΡΠΎΠΌ, ΠΊΠ°ΠΊ Π²ΡΠ΅ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ Π² ΠΠ‘. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½ΠΈΠΆΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ.
ΠΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ
ΠΠ±ΠΎ Π²ΡΠ΅Ρ Π΄Π΅ΡΠ°Π»ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ Π°Π΄ΡΠ΅ΡΠΎΠ² Π½Π° ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ° (virtual to physical memory mapping), ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ°Ρ ΡΡΡΠ°Π½ΠΈΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ (page swapping) ΠΈ Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΡΠ°Π½ΠΈΡ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΡ (demand paging) ΠΈ ΠΏΡΠΎΡΠΈΡ ΠΌΠΎΠΌΠ΅Π½ΡΠ°Ρ Π·Π°Π±ΠΎΡΠΈΡΡΡ ΠΠ‘. ΠΡΠΈ Π²ΠΎΠΏΡΠΎΡΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡΠΆΠ΄Π°ΡΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΠ‘, Π° ΡΠ°ΠΊΠΆΠ΅ Π² ΠΊΠ½ΠΈΠ³Π΅ Π‘ΠΎΠ»ΠΎΠΌΠΎΠ½Π° (Solomon) ΠΈ Π ΡΡΡΠΈΠ½ΠΎΠ²ΠΈΡΠ° (Russinovich) Inside Windows2000. ΠΡΠ°ΡΠΊΠΎΠ΅ ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡΡΡ Π½ΠΈΠΆΠ΅:
β’ Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΠΏΠΎΠ»Π°Π³Π°ΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΠΌ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ; Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠ΅ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΡΠΎΠΌΠ΅ Windows XP, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ ΡΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ 128 ΠΠ±Π°ΠΉΡ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π² ΡΠΈΠΏΠΈΡΠ½ΡΡ ΡΠ»ΡΡΠ°ΡΡ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΌΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΡΡ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ.[21]
β’ ΠΠ°ΠΆΠ΄ΡΠΉ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ β Π° ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ , ΡΠ°ΠΊ ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ , ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ β ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, ΠΎΠ±ΡΠ΅ΠΌ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΡΠ΅Π²ΠΎΡΡ ΠΎΠ΄ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΌ Π΄ΠΎΡΡΡΠΏΠ½ΠΎΠ³ΠΎ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΠΌΠΊΠΎΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ 1 ΠΠ±Π°ΠΉΡ, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ, Π² Π²ΠΎΡΠ΅ΠΌΡ ΡΠ°Π· ΠΏΡΠ΅Π²ΡΡΠ°Π΅Ρ Π΅ΠΌΠΊΠΎΡΡΡ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΎΠ±ΡΠ΅ΠΌΠΎΠΌ 128 ΠΠ±Π°ΠΉΡ, ΠΈ ΡΠ°ΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ.
β’ ΠΠ‘ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ Π°Π΄ΡΠ΅ΡΠ° Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π°Π΄ΡΠ΅ΡΠ°.
β’ ΠΠ»Ρ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΡ ΡΡΡΠ°Π½ΠΈΡ Π² ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΠΌΠ΅ΡΡΠ° Π½Π΅ Ρ Π²Π°ΡΠΈΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΠ‘ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ΅Π°Π³ΠΈΡΠΎΠ²Π°ΡΡ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ (page faults), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠΈΠ΅ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΡΡΡΡΡΡΠ²ΡΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ, ΠΈ Π·Π°Π³ΡΡΠΆΠ°ΡΡ Π΄Π°Π½Π½ΡΠ΅ Ρ ΠΆΠ΅ΡΡΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΠΊΠ° β ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ (swap file) ΠΈΠ»ΠΈ ΠΈΠ· ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°. ΠΡΠ΄ΡΡΠΈ ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΡΠΌΠΈ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°, ΡΡΡΠ°Π½ΠΈΡΠ½ΡΠ΅ ΠΎΡΠΈΠ±ΠΊΠΈ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Π²Π»ΠΈΡΡΡ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡΡΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ Π±ΡΠ»Π° ΡΠ²Π΅Π΄Π΅Π½Π° ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ. ΠΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΡΠ²Π΅ΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠΉ ΡΠ΅ΠΌΡ, ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΡ ΠΎΠ΄ΠΈΡ Π·Π° ΡΠ°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ, Π²Ρ Π½Π°ΠΉΠ΄Π΅ΡΠ΅ Π² ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ ΠΠ‘.
ΠΠ° ΡΠΈΡ. 5.1 ΠΏΡΠΎΠΈΠ»Π»ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎΠ²Π½Π΅ΠΉ API ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Windows ΠΏΠΎΠ²Π΅ΡΡ Π΄ΠΈΡΠΏΠ΅ΡΡΠ΅ΡΠ° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (Virtual Memory Manager, VMM). API Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Windows (VirtualAlloc, VirtualFree, Virtual-Lock, VirtualUnlock ΠΈ ΡΠ°ΠΊ Π΄Π°Π»Π΅Π΅) ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΡΠ΅Π»ΡΠΌΠΈ ΡΡΡΠ°Π½ΠΈΡΠ°ΠΌΠΈ. API ΠΊΡΡΠΈ Windows ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΠΡ Π½Π΅ Π±ΡΠ΄Π΅ΠΌ ΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ½Π° Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΊ API, ΡΠ°Π·Π»ΠΈΡΠ½Π° Π² Windows 9x ΠΈ Windows NT ΠΈ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ Microsoft.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, ΠΌΠ½ΠΎΠ³ΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ Π·Π½Π°ΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΠ΅Π΄Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ. ΠΠ°ΡΠ½ΠΈΡΠ΅ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Π²ΡΠ·ΠΎΠ²Π° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
VOID GetSystemInfo(LPSYSTEM_INFO lpSystemInfo)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ»ΡΠΆΠΈΡ Π°Π΄ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΡ PSYSTEM_INFO, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡΠ½ΠΎΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ Π°Π΄ΡΠ΅ΡΠ°Ρ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π΄Π»Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
ΠΡΡΠ°
Windows ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΏΡΠ»Ρ ΠΏΠ°ΠΌΡΡΠΈ, Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΊΡΡΠ°ΠΌΠΈ (heaps). ΠΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ.
Π ΠΈΡ. 5.1. ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Windows
ΠΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡΡΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ, Π½ΠΎ Π² ΡΠΈΠ»Ρ ΡΡΠ΄Π° ΠΏΡΠΈΡΠΈΠ½, ΠΎ ΠΊΠΎΡΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠΊΠ°Π·Π°Π½ΠΎ Π½ΠΈΠΆΠ΅, ΠΈΠ½ΠΎΠ³Π΄Π° ΡΠ΅Π»Π΅ΡΠΎΠΎΠ±ΡΠ°Π·Π½ΠΎ ΠΈΠΌΠ΅ΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΡΡ. ΠΡΠ»ΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΡΡΠΈ Π²Π°ΠΌ Ρ Π²Π°ΡΠ°Π΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠΉΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΎΠΉ Π‘ (malloc, free, calloc, realloc).
ΠΡΡΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ Windows ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΈΠΌΠ΅ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ. ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΊΡΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ. Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΡΡΠ°, Π·Π°Π΄Π°Π½Π½Π°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΡ malloc ΠΈ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡ:
HANDLE GetProcessHeap(VOID)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΊΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°; Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ β NULL.
ΠΠ°ΠΌΠ΅ΡΡΡΠ΅, ΡΡΠΎ Π΄Π»Ρ ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ NULL, Π° Π½Π΅ INVALID_HANDLE_VALUE, ΠΊΠ°ΠΊ Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ CreateFile.
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ·Π΄Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΡΡ. ΠΠ½ΠΎΠ³Π΄Π° Π΄Π»Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ ΠΎΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΠ΄ΠΎΠ±Π½ΡΠΌ, ΡΡΠΎΠ±Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ Π±ΡΠ»Π° ΠΏΡΠ΅Π΄ΡΡΠΌΠΎΡΡΠ΅Π½Π° ΡΠ²ΠΎΡ ΠΊΡΡΠ°. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΊΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΡΡΠ΄ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ².
β’ ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ Π²Π·Π°ΠΈΠΌΠ½ΠΎΠΉ Π΄ΠΈΡΠΊΡΠΈΠΌΠΈΠ½Π°ΡΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ. ΠΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΡΠΎΠΊΠΎΠ² Π½Π΅ ΡΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π΄Π»Ρ Π΅Π΅ ΠΊΡΡΠΈ. Π ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΡΡΠ΅ΡΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ (memory leak), Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ°Ρ Π² ΡΠ΅Ρ ΡΠ»ΡΡΠ°ΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° "Π·Π°Π±ΡΠ²Π°Π΅Ρ" ΡΠ²ΠΎΠ΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡΡ ΠΏΠ°ΠΌΡΡΡ, Π·Π°Π½ΡΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ , Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π² ΠΊΠΎΡΠΎΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅Ρ, Π±ΡΠ΄Π΅Ρ Π²Π»ΠΈΡΡΡ Π»ΠΈΡΡ Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΡΠ΅ΡΡΠ°.[22]
β’ ΠΠΎΠ²ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ. ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΡΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΌΠ΅Π½ΡΡΠ°Π΅Ρ ΡΠΎΡΡΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡΡΡ. Π‘ΠΌ. Π³Π»Π°Π²Ρ 9.
β’ ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ . Π Π°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΡΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ, ΡΠ΅ΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°ΠΌΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π² ΠΎΠ΄Π½ΠΎΠΉ Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΡΡΠ΅. ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ°ΠΊΠΆΠ΅ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠ°ΡΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ° ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΊΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΡΠΎ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΌΡ ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
β’ ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. ΠΠ±Π»Π°ΡΡΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΊΡΡΠΈ Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ Π²ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ. ΠΡΠΎΡ Π²ΡΠ·ΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΡΠ°Π½ΠΈΡ ΠΎΡΡΠΈΡΠ°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡ ΡΡΠ΅ΡΠΊΠΈ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΠΎΠΉ Ρ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΡΠ΅ΠΉ.
β’ ΠΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ. Π‘ΠΎΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ ΡΡΡΡΠΊΡΡΡΡ Π΄Π°Π½Π½ΡΡ Π² Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΊΡΡΠ΅ Π³Π°ΡΠ°Π½ΡΠΈΡΡΠ΅Ρ, ΡΡΠΎ Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ Π½Π΅Π±ΠΎΠ»ΡΡΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΡΡΠ°Π½ΠΈΡ, Π° ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠΌΠ΅Π½ΡΡΠΈΡΡ Π²Π΅ΡΠΎΡΡΠ½ΠΎΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΠΎΡΠΈΠ±ΠΎΠΊ ΡΡΡΠ°Π½ΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΡΡΠΊΡΡΡ Π΄Π°Π½Π½ΡΡ .
Π¦Π΅Π½Π½ΠΎΡΡΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΡ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΌΠΎΠΆΠ΅Ρ Π²Π°ΡΡΠΈΡΠΎΠ²Π°ΡΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΠΈ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΡΠΎΠ»ΡΠΊΠΎ ΠΊΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π‘. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ±ΠΎΡ Π»ΠΈΡΠ°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡΡ Windows Π³Π΅Π½Π΅ΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ (ΠΎΠ±ΡΡΠΆΠ΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½ΠΈΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ). Π Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΡ ΠΊΡΡ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΡΡ Π½ΠΈΠΆΠ΅.[23]
ΠΠ°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠΈ, ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ dwInitialSize (ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ), Π²ΡΠ΅Π³Π΄Π° ΠΎΠΊΡΡΠ³Π»ΡΠ΅ΡΡΡ Π΄ΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΡΠ°Π½ΠΈΡΡ, ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±ΡΠ΅ΠΌ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (Π² ΡΠ°ΠΉΠ»Π΅ ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΡΡΡ (commit) Π² ΡΠ°ΡΠΏΠΎΡΡΠΆΠ΅Π½ΠΈΠ΅ ΠΊΡΡΠΈ (Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎ Π·Π°ΠΏΡΠΎΡΠ°ΠΌ) ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ, Π° Π½Π΅ Π² ΠΎΡΠ²Π΅Ρ Π½Π° Π·Π°ΠΏΡΠΎΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (allocation) ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΠΊΡΡΠΈ. ΠΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΈΡΡΠ΅ΡΠΏΡΠ²Π°Π΅Ρ ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠΈ, ΠΊΡΡΠ΅ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΠ°Π½ΠΈΡΡ ΠΏΠ°ΠΌΡΡΠΈ Π²ΠΏΠ»ΠΎΡΡ Π΄ΠΎ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½Π° Π½Π΅ Π΄ΠΎΡΡΠΈΠ³Π½Π΅Ρ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠ³ΠΎ Π΄Π»Ρ Π½Π΅Π΅ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΠΉΠ» ΠΏΠΎΠ΄ΠΊΠ°ΡΠΊΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΠ΅ΡΡΡΡΠΎΠΌ, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΎΡΠΊΠ»Π°Π΄ΡΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΊΡΡΠ΅ Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ·Π΄Π½ΠΈΠΉ ΡΡΠΎΠΊ, Π΅ΡΠ»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΡΠ°Π½Π΅Π΅ Π½Π΅ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΠΊΠ°ΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ. ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π΄ΠΎΠΏΡΡΡΠΈΠΌΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΡΡΠΈ ΠΏΡΠΈ Π΅Π΅ ΡΠ²Π΅Π»ΠΈΡΠ΅Π½ΠΈΠΈ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° dwMaximumSize (Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅Π½ΡΠ»Π΅Π²ΠΎΠ΅). Π ΠΎΡΡ ΠΊΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π·Π°Π΄Π°Π½Π½ΡΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΌ ΠΏΡΡΠ΅ΠΌ.
HANDLE HeapCreate(DWORD flOptions, SIZE_T dwInitialSize, SIZE_T dwMaximumSize)
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅: Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΠΊΡΡΠΈ; Π² ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠ³ΠΎ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ β NULL.
Π’ΠΈΠΏΠΎΠΌ Π΄Π°Π½Π½ΡΡ ΠΎΠ±ΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡΡ ΠΏΠΎΠ»Π΅ΠΉ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΠΌΠΈ ΠΊΡΡΠΈ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ DWORD, a SIZE_T. Π’ΠΈΠΏ Π΄Π°Π½Π½ΡΡ SIZE_T ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ 32β ΠΈΠ»ΠΈ 64-Π±ΠΈΡΠΎΠ²ΠΎΠ΅ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π±Π΅Π· Π·Π½Π°ΠΊΠ°, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠ»Π°Π³ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° (_WIN32 ΠΈΠ»ΠΈ _WIN64). ΠΡΠΎΡ ΡΠΈΠΏ Π΄Π°Π½Π½ΡΡ Π±ΡΠ» Π²Π²Π΅Π΄Π΅Π½ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠΈΠ³ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Win64 (ΡΠΌ. Π³Π»Π°Π²Ρ 16), ΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°Π΅Ρ Π²Π΅ΡΡ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ 32β ΠΈ 64-Π±ΠΈΡΠΎΠ²ΡΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΡΠΈΠ°Π½ΡΠΎΠΌ ΡΡΠΎΠ³ΠΎ ΡΠΈΠΏΠ° Π΄Π°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΈΡΠ΅Π» ΡΠΎ Π·Π½Π°ΠΊΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΏ SSIZE_T).