рдЙрдЪреНрдЪ рд╕реНрддрд░реАрдп рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдУрдВ рдХреА рд╕реБрдВрджрд░рддрд╛ рдХреНрдпрд╛ рд╣реИ?
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ "рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреИрд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ" рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдирд╛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ рдФрд░ рдкрд╣рд╛рдбрд╝ рдХреЛ рдПрдХ рдЯрди рдХрд╛ рдмреЗрд╣рд┐рд╕рд╛рдм рдХреЛрдб рджреЗрддрд╛ рд╣реИ, рдЬреЛ рдХрднреА-рдХрднреА рдХрд╛рдо рднреА рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрднреА-рдХрднреА рдзреАрдорд╛ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЕрдХреНрд╕рд░, рд╡рд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдиреЗ рднреА рдирд╣реАрдВ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрд╕рдХреЗ рдкрд╛рд╕ рдЖрд╡рд╢реНрдпрдХ рдЬреНрдЮрд╛рди рдХреА рдХрдореА рд╣реИ (рдЕрдлрд╕реЛрд╕, рд╡реЗ рдЕрдм рдЗрд╕реЗ рд╕рд┐рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ)ред
рдлрд┐рд░ рдпрд╣ рд╕рдм рдХреБрдЫ рдРрд╕реЗ рдЪрддреБрд░ рд╢рдмреНрджреЛрдВ рдХреЗ рд╕рд╛рде рдЖрддрд╛ рд╣реИ рдЬреИрд╕реЗ "рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди", рдЖрдВрддрд░рд┐рдХ рд░реВрдкрд░реЗрдЦрд╛ рдЬреЛ рдЖрдк рдмрд┐рдирд╛ рдЖрдБрд╕реВ рдХреЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп chiaroscuros, рдЬрд┐рд╕рдореЗрдВ рддрдХрдиреАрдХреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬрд┐рд╕реЗ рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЗрд╕реЗ рдХреБрдЫ рддреГрддреАрдп-рдкрдХреНрд╖ рдЬрд╝рд╛рдпрдЬрд╝рд┐рди рджреНрд╡рд╛рд░рд╛ рд╕рдордЭрд╛ рдЬрд╛ рд╕рдХреЗ, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╣реИ (рд╣рд╛рдБ рдФрд░ рдкреВрд░реНрд╡ рдЕрдзрд┐рдХрд╛рд░реА), рд╕рдмрд╕реЗ рджреВрд░ рдХрд╛ рд░рд┐рд╢реНрддрд╛ рд╣реИред
рд╢рдмреНрдж рд╕реНрдорд╛рд░реНрдЯ рд╣реИрдВ, рдПрдХ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдХреЛрдб рдХреЗ рд▓рд┐рдП рдпрд╣ рдлрд┐рдЯ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди ...
рдФрд░ рдлрд┐рд░, рдЕрдЧрд▓реЗ рдЪрддреБрд░ "рдкреИрдЯрд░реНрди" рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╡рд╣ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдзреАрдорд╛ рдХрд╣рд╛рдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдЕрдзрд┐рдХ рд▓рдЧрд╛рддрд╛рд░ рд░рд╣рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╡реАрд╕реАрдПрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХрднреА-рдХрднреА рдиреАрдЪреЗ рддрдХ рднреА рдкрд╣реБрдВрдЪ рдЬрд╛рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдмреНрд░реЗрдХ рдЙрд╕реЗ рдЬреНрдЮрд╛рдд рдПрдкреАрдЖрдИ рдХреЗ рдХреЙрд▓ рдХреЗ рдЦрд┐рд▓рд╛рдл рдЖрд░рд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдкрд╛рд╕ рдЬрд╛рдиреЗ рдкрд░ рд╡рд╣ рд╢рд╛рдВрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдмрдЧрдЯреНрд░реИрдХрд░ рдореЗрдВ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░ рджреЗрддрд╛ рд╣реИ: "рдлрд╝рдВрдХреНрд╢рди XXX рдзреАрдорд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИ, рдХреЛрдИ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдирд╣реАрдВ рд╣реИрдВред "
рд╣рд╛рд▓рд╛рдд рд╕реЗ рдирд╣реАрдВ рдорд┐рд▓реЗ рд╣реИрдВ?
рдЗрддрдирд╛ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА ...
рдореИрдВ рдРрд╕реЗ рдмрдВрдж рдЯрд┐рдХрдЯ рдХреЗ рд▓рд┐рдП рд╡рд┐рдХрд▓реНрдкреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рджрд┐рдЦрд╛рдКрдВрдЧрд╛, рдЬрд┐рд╕рдиреЗ рдПрдХ рд╕рдордп рдореЗрдВ рд▓рдХреНрд╖реНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреА рдЧрддрд┐ рдХреЛ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд┐рдпрд╛ рдерд╛ред рд╕рдорд╕реНрдпрд╛, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдереЛрдбрд╝рд╛ рджреВрд░ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рд░ рднреА рджрд░реНрд╢рд╛рддрд╛ рд╣реИред
рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо рдПрдХ рдРрд╕рд╛ рдЖрд╡реЗрджрди рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рд╡рд░реНрддрдорд╛рди рд╣реАрдкреНрд╕ рдХреА рдЕрдк-рдЯреВ-рдбреЗрдЯ рд╕реВрдЪреА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ (рдпрд╣ рдХреНрдпреЛрдВ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЪрд▓реЛ рдПрдХ рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рдХрд╣рддреЗ рд╣реИрдВ :))ред
рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдвреЗрд░ рдХреА рдПрдХ рд╕реВрдЪреА рдорд┐рд▓реЗрдЧреА, рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рдЦрд╛рд▓реА рдХрдВрд╕реЛрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдПрдВрдЧреЗ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рд▓рд┐рдЦреЗрдВрдЧреЗ:
procedure QueryProcessHeap1; var hSnapShot: THandle; HeapList: THeapList32; HeapEntry: THeapEntry32; Start: DWORD; begin Start := GetTickCount; Writeln('Heap info:'); Writeln; hSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPHEAPLIST, 0); try HeapList.dwSize := SizeOf(THeapList32); if Heap32ListFirst(hSnapShot, HeapList) then repeat HeapEntry.dwSize := SizeOf(THeapEntry32); if Heap32First(HeapEntry, GetCurrentProcessId, HeapList.th32HeapID) then repeat Writeln(Format('Heap addr: 0x%p, size: %d', [Pointer(HeapEntry.dwAddress), HeapEntry.dwBlockSize])); until not Heap32Next(HeapEntry); until not Heap32ListNext(hSnapShot, HeapList); finally CloseHandle(hSnapShot); end; Writeln; Writeln('DONE. Time elapsed: ', GetTickCount - Start); end;
рдХреЛрдб рдЕрд╕рдВрднрд╡ рд╕реЗ рд╕рд░рд▓ рд╣реИ - рдорд╛рдирдХ TlHelp32 рдлрд╝рдВрдХреНрд╢рди рдмрд┐рдирд╛ рддрд╛рдордЭрд╛рдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрдХ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░, рдЗрд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рдо рдХреЗ рд╕рдордп рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред
рд▓рдЧрднрдЧ 150 рдорд┐рд▓реА рд╕реЗрдХреЗрдВрдбред рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреБрдЯрдХреБрд▓реЗ рдХрд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХрдВрдкреНрдпреВрдЯрд░ рдХреА рдмрдврд╝рддреА рд╢рдХреНрддрд┐ рдХреЛ рдЧреИрд░-рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рдорддрд▓ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рд╛рд╕реНрдпрд╛рд╕реНрдкрдж рд╣реИрдВ, рд▓реЗрдХрд┐рди ...
рд╣рдордиреЗ рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдиреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд▓реЗрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдорд╢реАрди рдкрд░ рдпрд╣ рдХрд┐рддрдирд╛ рд╣реЛрдЧрд╛? рд╣рд╛рдВ, рдХрдо рд╕реЗ рдХрдо рдкрдЪрд╛рд╕ рдбреЙрд▓рд░, рдФрд░ рд╣рдо рдХреНрдпрд╛ рдХрд░реЗрдВрдЧреЗ?
рдХреЗрд╡рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣реАрдк рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдореЗрдВ рд▓рдЧрднрдЧ рдкрд╛рдВрдЪ-рд╕реЗрдХрдВрдб рдХреА рджреЗрд░реА рд╣реИ (рдореИрдВ рдХреЗрд╡рд▓ рдереНрд░реЗрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдЖрджрд┐)
рдареАрдХ рд╣реИ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
рд╣рдореЗрдВ рджреЛрд╖ рдирд╣реАрдВ рджреЗрдирд╛ рд╣реИ - рдпрд╣ рд╣реИ рдХрд┐ рдХреИрд╕реЗ Heap32xxx рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпреЗ рдмреНрд░реЗрдХ рдЙрдирдХреЗ рдХреЙрд▓ рдореЗрдВ рджреЗрд░реА рдХреЗ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ (рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реИ)ред рдФрд░ рдЕрдм рд╣рдо рд╕рд░реНрд╡рд░ рдкрд░ рдЕрдкрдиреА рд╕реЗрд╡рд╛ рдХреЗ рд╕рд╛рде рдмреИрдареЗ рд╣реИрдВ, рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдФрд░ рд╢реНрд░рдЧ рдЦрд╛ рд░рд╣реЗ рд╣реИрдВ: "рдПрдлрдПрд╕рдИ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реИ - рдмреЙрд╕ред"
рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ рдмрд╛рдзрд╛рдУрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдИ рднреА рдирд╣реАрдВ - рд╣рдо рджреЛрд╖реА рд╣реИрдВред
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкрд╛рд╕ рд╣рдореЗрд╢рд╛ рдПрдХ рдбрд┐рдмрдЧрд░ рд╣реЛрддрд╛ рд╣реИ, рдзрдиреНрдпрд╡рд╛рдж рдЬрд┐рд╕рдХреЗ рдХрд╛рд░рдг рдЖрдк рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд╕реАрдкреАрдпреВ-рд╡реНрдпреВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЙрд▓ рд╕реНрдЯреИрдХ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдХреЗред
рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рдореИрдВ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рд╕реБрд░рдХреНрд╖рд╛ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд▓реЗрдЦ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВ, рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВ (рдЖрдкрдХреЛ рдпрд╣ рдЦреБрдж рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП), рдЗрд╕рд▓рд┐рдП рдЪрд▓рд┐рдП Heap32First рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдкрд░ рдмреНрд░реЗрдХ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдФрд░ F7 рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рд░реВрдЯ рдХрд░рддреЗ рд╣реИрдВред
рдХреБрдЫ рджрд░реНрдЬрди рдЯреНрд░реЗрд╕рд┐рдВрдЧ рдЪрд░рдгреЛрдВ рдХреЗ рдмрд╛рдж, рд╣рдо рджреЗрдЦреЗрдВрдЧреЗ:

рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдереЛрдбрд╝рд╛ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рд╣реЛрдЧрд╛:

рдЬрд┐рд╕рдХреЗ рдмрд╛рдж рд╣рдо рдЙрд╕реА рдЪрд░рдг рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ Heap32Next рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рдеред
рдЖрдкрдХреЛ рдХреНрдпрд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рд╡рд╣рд╛рдВ рдХреНрдпрд╛ рдкрд╛рддреЗ рд╣реИрдВ?
рдХрд╛рд╢ - рд╡рд╣реА RtlCreateQueryDebugBuffer + RtlQueryProProcessDebugInformation рдФрд░ RtlDestroyQueryDebugBuffer рдХреЗ рдЕрдВрдд рдореЗрдВред
рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдЕрдбрд╝рдЪрди рд╣реИ, рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐
рд╣рдо рдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рд▓рд┐рдП, рдЬрдм tlhelp32.dll рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реЗ API рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛
рдЬрд╛рддрд╛ рд╣реИ , рддреЛ
рдЗрди рддреАрдиреЛрдВ рдПрдкреАрдЖрдИ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ
рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ , рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкрд╣рд▓рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдПрдХрддреНрд░ рдХрд░рддрд╛ рд╣реИ, рджреВрд╕рд░рд╛ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреЗрд╡рд▓ рдПрдХ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдФрд░ рдлрд┐рд░ рд╕рдм рдХреБрдЫ рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдХреНрдпрд╛ рдпрд╣ рдмрд╣реБрдд рдорд╣рдВрдЧрд╛ рд╣реИ?
рдЕрдм рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ - рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдореЗрдВ рд╣рдореЗрдВ рдХрд┐рддрдирд╛ рд╕рдордп рд▓рдЧрд╛? 150 рдорд┐рд▓реАрд╕реЗрдХрдВрдб? рдареАрдХ рд╣реИ, рд╣рд╛рдБ, рдХреНрдпреЛрдВ рдирд╣реАрдВ, рдЬрдм рд╕рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рддреНрдпреЗрдХ рд╣реАрд▓реНрд╡реЗрдб 2 рдиреЗрдХреНрд╕реНрдЯ рдХреЙрд▓ рдХреЗ рд▓рд┐рдП рдлрд┐рд░ рд╕реЗ рдПрдХрддреНрд░ рдХреА рдЧрдИ рдереАред
рд╣рдо рд▓рдбрд╝реЗрдВрдЧреЗ - рд╣рдо рдХреЛрдб рд▓рд┐рдЦрддреЗ рд╣реИрдВ (рдореИрдВ рддреБрд░рдВрдд рдЖрдкрдХреЛ рдЪреЗрддрд╛рд╡рдиреА рджреЗрддрд╛ рд╣реВрдВ, рдХреЛрдб рдШреБрдЯрдиреЗ рд╕реЗ рдКрдВрдЪрд╛ рд╣реИ, рдпрд╣ рдкрддреЛрдВ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рднреНрд░рдорд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдХрд░реЗрдЧрд╛)ред
procedure QueryProcessHeap2; var I, A: Integer; pDbgBuffer: PRtlDebugInformation; pHeapInformation: PRtlHeapInformation; pHeapEntry: PRtrHeapEntry; dwHeapStartAddr, dwAddr, dwLastSize: DWORD; hit_seg_count: Integer; Start: DWORD; begin Start := GetTickCount; Writeln('Heap info:'); Writeln; pDbgBuffer := RtlCreateQueryDebugBuffer(0, False); if pDbgBuffer <> nil then try
рдФрд░ рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ?
рд╣рд╛рд▓рд╛рдВрдХрд┐, рддреНрд╡рд░рдг рдЪрд╛рд░ рдЧреБрдирд╛ рд╕реЗ рдЕрдзрд┐рдХ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдиреНрд╣реЛрдВрдиреЗ рд╕рд┐рд░реНрдл рдПрдХ рддрд┐рдкрд╣рд┐рдпрд╛ рдХрд┐рдпрд╛ред
рдЧреИрд░-рджрд╕реНрддрд╛рд╡реЗрдЬреА?
рдЙрд╕рдХреЗ рд╕рд╛рде рдЙрд╕ рд╡рд┐рджреВрд╖рдХ, рд╕реВрдХреНрд╖реНрдорддрд╛ рдореЗрдВ рддрд▓реНрд▓реАрди рдХрд░рдиреЗ рдореЗрдВ рд╕рдВрдХреЛрдЪ рдирд╣реАрдВ рдХрд░рддреЗ :)
рдмрд╕ "рдЬрдм рдЖрдк рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рдФрд░ "рдЬрдм рдЖрдкрдХреЛ рдЬрд╝рд░реВрд░рдд рд╣реЛ" рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ :)
рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдиреБрдХрд╕рд╛рди рдХреНрдпрд╛ рд╣реИрдВ?
рдЦреИрд░, рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдХреЛрдИ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕рдВрд░рдЪрдирд╛ рдЕрдЧрд▓реЗ рдкреИрдЪ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдмрджрд▓реЗрдЧреА, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдИ рднреА рдЧрд╛рд░рдВрдЯреА рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдЦреБрдж рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреА рдирд┐рд░реНрдпрд╛рдд рд╕реВрдЪрд┐рдпреЛрдВ рдореЗрдВ рдмрдиреА рд░рд╣реЗрдЧреАред рд╕рдЪ рд╣реИ, рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореБрдЭреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд╛ рд╕рд╛рдордирд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдПрдХ рдПрдХрд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдкрд╡рд╛рдж рдХреЗ рд╕рд╛рде - AllocateAndGetTcpExTableFromStackред рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд╕рд╛рде, рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╕рдм рдХреБрдЫ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реБрдЖ, рд╢реБрд░реВ рдореЗрдВ рдпрд╣ рд╡рд┐рдВрдбреЛрдЬрд╝ рдПрдХреНрд╕рдкреА рдореЗрдВ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рд╡рд┐рд╕реНрдЯрд╛ рдХреЗ рдмрд╛рд╣рд░ рдЖрдиреЗ рддрдХ, рдЗрд╕реЗ рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдорд╛рдирд╛ рдЧрдпрд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рд╕реНрдЯрд╛ рдХреА рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рд╕рд╛рде, рдЗрд╕реЗ рдкреНрд░рд▓реЗрдЦрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рддреБрд░рдВрдд Iphlpapi.dll рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдпрд╣ рд▓рд┐рдЦрддреЗ рд╣реБрдП рдХрд┐ "рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдЕрдм рд╡рд┐рдВрдбреЛрдЬ рд╡рд┐рд╕реНрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред"
рджреВрд╕рд░рд╛ рдорд╛рдЗрдирд╕: рдХрд┐рд╕реА рдкреНрд░рд▓реЗрдЦрд┐рдд рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдЕрдзрд┐рдХ рдЙрддреНрдкрд╛рджрдХ рдПрдирд╛рд▓реЙрдЧ рдХреЛ рдвреВрдВрдврдирд╛ рд╣рдореЗрд╢рд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЕрдиреБрдХреВрд▓рди рдХреЗ рд▓рд┐рдП рдЕрдиреБрдХреВрд▓рди рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреБрд░рд╛ рдкрд░реНрдпрд╛рдкреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИ ...
рд╕реНрд░реЛрдд рдХреЛрдб рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
rouse.drkb.ru/blog/heap.zipрдЕрд▓реЗрдХреНрдЬреЗрдВрдбрд░ (Rouse_) рдмрд╛рдЧреЗрд▓
рджрд┐рд╕рдВрдмрд░ 2012