Autor: Arndt Lindner (---.dip0.t-ipconnect.de)
Datum: 17.11.19 20:47
Dynamische Array sind nur eingeschränkt als Parameter bzw. Rückgabewerte in Prozeduren verwendbar. Der Code verdeutlicht das Problem, wenn man ihn laufen lässt und den Ressourcenverbrauch (Arbeitsspeicher) im Ressourcenmonitor verfolgt. Die Angabe "Arbeitssatz (KB)" wächst stetig an.
proc testdynarray
parameters longint n[]
declare longint rw[]
rw[] = n[]
return rw[]
endproc
declare longint n1[], n2[]
cls
clear n1[], n2[]
n1[5] = 1999999
while 1
n2[] = testdynarray(n1[])
endwhile
end
In Programmen, die nur eine begrenzte Zeit laufen hat es bei mir noch keine Rolle gespielt. In einem Programm, das lange kontinuierlich laufen soll kommt es aber nach einigen Stunden zwangseise zum Absturz mit der Fehlermeldung:
Exception EOutOfMemory in Modul test.exe bei 000075BB.
Zu wenig Arbeitsspeicher.
Kennt jemand eine Möglichkeit das zu verhindern?
Viele Grüße
Arndt
|
|