29. december 2003 - 06:17Der er
2 kommentarer og 2 løsninger
Delocate dynamic array?
Jeg har en variabel af typen : array of array of strings.
Selve arrayet er vel en 20 gange 10.000 stings, så det fylder godt i hukommelsen. Problemmet er så bare at den ikke vil frigive hukommelsen, selv om jeg sætter variablen til nil.
Lidt kode:
var data : array of array of String;
begin //blabla //osv data := nil; // <-- frigiver ikke hukommelsen end;
Ifølge manual og help gør du tilsyneladende det rigtige - men der er jo altid faldgruber.
Jeg tror, at problemet kan være, at der findes referencer til de strings, der er elementer i arrayet. Så prøv at løbe arrayet igennem og sæt de enkelte elementer til en tom streng (data[x] := '';)inden du sætter data := NIL;
Det er en god ide at bruge setlength(0) - men rent faktisk siger manualen, at man kan deallocere et dynamisk array ved at sætte variablen til NIL.
Citat (Object Pascal side 5.19): To deallocate a dynamic array, assign nil to a variable that references the array or pass the variable to Finalize; either of these methods disposes of the array, provided there are no other references to it.
Det sidste forbehold var grunden til at jeg foreslog nulstilling af de strings, der var i arrayet.
Jeg har givet jer 15 point hver, selv om det var Borrisholt's svar, som var mest brubar/præcis
God Jul ;)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.