Memory Lost and Found ... Og Released

Roy Nelson var forbauset over å finne at mange Delphi-skriftlige DLL-filer ble regelmessig lekker minne: etter å spore opp årsaken, setter han seg for å arbeide med å finne en gjennomførbar plugg til det som viste seg å være en ganske vanskelig lekke. Denne artikkelen har vært lenge i å gjøre: Det hele startet for to år siden, etter en samtale med en tidligere kollega. Samtalen sentrert på det faktum at de var opplever problemer med sine ISAPI DLL-filer skrevet i Delphi. Det virket som om DLL-filer var lekker 4KB minne hver gang de ble lastet inn i minnet. Etter hvert byttet de over til CGI å fikse problem.My reaksjon var "Hva? Min Delphi miste hukommelsen? Aldri!' Jeg fikk ikke undersøke dette videre på den tiden. Men om to måneder siden jeg så noen nevne en "kjent" lekkasje i VCL på en nyhetsgruppe. Jeg ble fascinert, som den magiske 4KB nummer ble nevnt. Alle syntes å vite om dette, og selv hva som var årsaken til lekkasjen. Hva skjedde her? Jeg hadde en titt på koden og jeg så hvorfor det ikke hadde blitt plugget. Denne lekkasjen i Delphi DLL-filer viser seg bare under spesielle forhold. Den viktigste forutsetningen er at Controls enheten må være referert sted i enhetene som brukes for å kompilere DLL. For det andre må DLL ikke gjøre bruk av pakker. Til slutt, har DLL skal eksplisitt lastes og losses ved hjelp av LoadLibraryXX og FreeLibrary API calls.CLICK HER for hele artikkelen.



Previous:
Next Page: