🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: maus.lang.tpascal
6 messages
6 total messages Started by Heiko Bertsch Mon, 06 Oct 1997 00:00
Out of memory / Heap overflow error
#15
Author: Heiko Bertsch
Date: Mon, 06 Oct 1997 00:00
21 lines
1970 bytes
Ich habe 2 Probleme in TP und w�rde mich freuen, wenn mir einer, am
besten per Mail, helfen k�nnte.

1.) Error 1: Out of memory
Was kann ich machen, wenn diese Fehlermeldung beim Starten (eines
gr��eren) Programmes erscheint. Soweit es geht habe ich schon Funktionen
und Proceduren in Uniten ausgelagert.

2.) Error 203: Heap overflow error
Ich versuche in meinem Programm ein Art Erdbeben zu erzeugen, indem ich
den Bildschirm in 4 Teile aufteile und 4 mal per "getimage" und
"putimage" den Bildschirminhalt immer um ein paar Pixel in eine Richtung
bewege. Dabei st�rzt aber h�ufig das Programm mit dem oben genannten
Fehler ab. Was soll man da tun??

Vielen dank im Voraus f�r eure Hilfe...
Heiko

[Homepage: http://www.YI.com/home/BertschHeiko]
...........................................................THE END.....
Re: Out of memory / Heap overflow error
#5
Author: Stefan Fiedler
Date: Thu, 09 Oct 1997 00:00
19 lines
1852 bytes
On 6 Oct 1997 13:01:42 GMT, Heiko.Bertsch@t-online.de (Heiko Bertsch)
wrote:

>2.) Error 203: Heap overflow error
>Ich versuche in meinem Programm ein Art Erdbeben zu erzeugen, indem ich
>den Bildschirm in 4 Teile aufteile und 4 mal per "getimage" und
>"putimage" den Bildschirminhalt immer um ein paar Pixel in eine Richtung
>bewege. Dabei st�rzt aber h�ufig das Programm mit dem oben genannten
>Fehler ab. Was soll man da tun??
Yeahhh! BGI rulezz! ;)
War das nicht so, das GetImage jedesmal nen neuen Speicherblock
reserviert? Wenn ja, d�rfte das Wohl der Grund sein, warum die 640k so
schnell mit Bilddaten vollgeh�mmert sind. :)
Warum machst du eigentlich das GetImage nicht nur einmal und l�sst dann
die 4tel "beben" ?

>Vielen dank im Voraus f�r eure Hilfe...
>Heiko
Re: Out of memory / Heap overflow error
#6
Author: Chris Franzen
Date: Fri, 10 Oct 1997 00:00
25 lines
1948 bytes


> 1.) Error 1: Out of memory
> Was kann ich machen, wenn diese Fehlermeldung beim Starten (eines
> gr��eren) Programmes erscheint. Soweit es geht habe ich schon Funktionen
> und Proceduren in Uniten ausgelagert.

Was sagt MEM?
Target=DPMI oder real mode? 
Benutzt Du BP 7.0 oder 7.01?

> 2.) Error 203: Heap overflow error
> Ich versuche in meinem Programm ein Art Erdbeben zu erzeugen, indem ich
> den Bildschirm in 4 Teile aufteile und 4 mal per "getimage" und
> "putimage" den Bildschirminhalt immer um ein paar Pixel in eine Richtung
> bewege. Dabei st�rzt aber h�ufig das Programm mit dem oben genannten
> Fehler ab. Was soll man da tun??

Das kann 1000 Ursachen habe. Bestimmt machst du mehr GetMems oder News also
FreeMems oder Disposes. Oder du bringst durch falsche Pointeroperationen
die Heapverwaltung durcheinander.

-- 
-- Chris, The Blast I
Re: Out of memory / Heap overflow error
#7
Author: Stefan Fiedler
Date: Fri, 10 Oct 1997 00:00
16 lines
1718 bytes
On 10 Oct 1997 11:11:54 GMT, "Chris Franzen" <franzen@hq.vobis.de> wrote:

>> 1.) Error 1: Out of memory
>> Was kann ich machen, wenn diese Fehlermeldung beim Starten (eines
>Target=DPMI oder real mode? 
>Benutzt Du BP 7.0 oder 7.01?
Ich bin zwar auch fuer detaiilierte Fehlermeldungen, aber in *dem* Fall
duerfte es wohl ziemlich unerheblich sein, ob die 7.0 oder 7.01... oder?
;) Soweit ich weis, sind die paar Bugs nicht beim Speichermanagment.

>-- Chris, The Blast I
Wow! :)

ps: (nette anfrage) kannst deine sig mal richtig formatieren, damit sie
mein newsreader rausschneiden kann? dank dir!
Re: Out of memory / Heap overflow error
#8
Author: Deniz Savran
Date: Wed, 15 Oct 1997 00:00
24 lines
1836 bytes
Greetinx !

Martin Suefke wrote:

> Ja, so schwer ist das doch nicht, benutze Pointer, denen Du vorher mit
>
> "getmem" Speicher freiger�umt hast, und dann sollte das gehen... wenn
> das
> nicht hilft, dann lagere die Segmente doch in den XMS aus, das kostet
> aber
> etwas Zeit.

Segmente in den XMS auslagern ? Wenn es nicht allzu kompliziert ist,
w�re ich dir dankbar, wenn du mir schreiben k�nntest, wie das geht. Ich
schreibe n�mliche gerade mit einem Freund ein GrafikProgramm, und wir
k�mpfen auch immer mit dem verf�gbaren Speicher, da wir
eben nicht wissen, wie wir den XMS nutzen (die Onlinehilfe hat uns da
auch nicht weitergebracht).


THX

                        Ich
Re: Out of memory / Heap overflow error
#9
Author: Christopher Eltschka
Date: Thu, 16 Oct 1997 00:00
53 lines
3634 bytes
Heiko Bertsch wrote:
> 
> Ich habe 2 Probleme in TP und w�rde mich freuen, wenn mir einer, am
> besten per Mail, helfen k�nnte.
> 
> 1.) Error 1: Out of memory
> Was kann ich machen, wenn diese Fehlermeldung beim Starten (eines
> gr��eren) Programmes erscheint. Soweit es geht habe ich schon Funktionen
> und Proceduren in Uniten ausgelagert.
> 

Nun, zunaechst einmal ueberpruefen, wie effizient der Speicher vom 
Programm eingesetzt wird. Insbesondere auf zu grosse MemAlloc-Bloecke
achten (z.B. fuer GetImage nicht mehr Speicher anfordern, als
ImageSize angibt) und Speicherloecher ueberpruefen (d.h., dass
nichts auf dem Heap zurueckbleibt, was nicht mehr benoetigt wird).
Insbesondere auch darauf achten, dass die FreeMem-Groesse exakt
mit der GetMem-Groesse uebereinstimmt.

Ausserdem sollte auch der verfuegbare Speicher ueberprueft werden
(z.B. mit dem DOS-Programm mem). Eventuell wird der Speicher von
zu vielen residenten Programmen/Treibern aufgefressen.

Nuetzt dies alles nichts, sollte das Programm Overlays benutzen.
Das heisst, dass der Compiler bestimmte Units (die ihm per $O
mitgeteilt werden) nicht ins .EXE schreibt, sondern in eine eigene
Overlay-Datei, und sie nur bei Bedarf in den Hauptspeicher laedt.
Dies eignet sich z.B. gut fuer solche Units, die nur sehr selten 
gebraucht werden (das Nachladen erfordert natuerlich Zeit).
Der Speichergewinn ergibt sich daraus, dass i.w. nur fuer eine Unit
Platz gelassen werden muss (wieviel genau, kann man kontrollieren),
da weitere Units einfach in denselben Speicherplatz kommen.
Naeheres zu Overlays steht im Handbuch.

> 2.) Error 203: Heap overflow error
> Ich versuche in meinem Programm ein Art Erdbeben zu erzeugen, indem ich
> den Bildschirm in 4 Teile aufteile und 4 mal per "getimage" und
> "putimage" den Bildschirminhalt immer um ein paar Pixel in eine Richtung
> bewege. Dabei st�rzt aber h�ufig das Programm mit dem oben genannten
> Fehler ab. Was soll man da tun??
> 

Nun, zunaechst einmal auf den Speicher schauen:
Wieviele dieser Teilbilder muessen *gleichzeitig* gespeichert
werden? Koennte man ein Viertelbild verschieben, und dann den
Speicher fuer das naechste Viertelbild "recyclen", wenn man die
Reihenfolge geschickt waehlt?

Amsonsten gelten natuerlich auch die Regeln von oben. Insbesondere
auf Speicherloecher ist hier besonders zu achten; wenn in einer
Schleife laufend Speicher angefordert, aber nie freigegeben wird,
kann der Heap sehr schnell zu Ende gehen...
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads