Seite 1 von 2

FreeMemory und End?

Verfasst: 21.11.2006 16:59
von mknjc
Hallo,

Ich wollte fragen ob es sinvoll ist am ende des Programms wo es ja sowieso endet noch einmal End hinzuschreiben.

Genauso die Frage ob man FreeMemory() schreiben muss.

Wenn ich:

Code: Alles auswählen

AllocateMemory(5000000)
Delay(8000)[code]schreibe Werden die 5 MB scheinbar trotzdem freigegeben sobald das Prog endet.

Daher meine frage ist es sinnvoll am ende alle Speicherbereiche zu löschen und dann End auszuführen??

Mfg mknjc

Verfasst: 21.11.2006 17:10
von ts-soft
purebasic.chm hat geschrieben:Hinweis: Alle reservierten Speicherbereiche werden automatisch freigegeben, wenn das Programm beendet wird.

Kann man weglassen, aber selber Freigeben ist ordentlicher. End kann man
auch weglassen, aber ...
:wink:

Verfasst: 21.11.2006 19:49
von a14xerus
speicehr solltest du vorallem freigeben, wenn du ihn nur kurz benötigst.
genau wie man dateien am besten nach dem auswerten direkt wieder schließt
und falls du später größere programme hast, willst vielleicht noch was unter deinem eigentlichem programm schreiben, oder mehrere endunkte haben.
Also eigentlich sollte man sich von anfang an angwöhnen, programme zu beenden und speicher, dateien etc freizugeben

Verfasst: 21.11.2006 20:54
von mknjc
Klar aber ich hab mir eine Fehlerprozedure geschrieben.
Und wenn die feststellt das das Prog nichmer zu retten ist führt sie einfach End aus da ich keine Lust hab wenn sowieso alles verloren ist noch extra zu überprüfen ob irgentein Speicher in irgenteiner Prozedure der Protected ist in einer LinkedList zu speichern und dann zu gucken was offen ist und dann extra zu schließen.

Das mit dem ob End wichtig ist bin ich drauf gekommen als ich die Beispiele sah.

Mfg mknjc

Verfasst: 21.11.2006 20:59
von Kaeru Gaman
mach mal in ein kleines programm eine DATA-Section ans ende und lass den END-befehl weg.

dann wird die CPU versuchen, die daten in der data-section als assembler zu interpretieren, und heillos abstürzen.

Verfasst: 21.11.2006 21:12
von mknjc
Nagut da hab ich ein ?Vorteil?

Ich setze Data's an den anfang.

Hat bisher immer geklappt

Mfg mknjc

Verfasst: 21.11.2006 21:13
von Kaeru Gaman
na und? du hast gefragt, wozu ein End gut ist.

Verfasst: 21.11.2006 22:04
von mknjc
Gut also macht End genau das was das Ende des Programms macht.

Mfg mknjc

Verfasst: 21.11.2006 22:30
von remi_meier
@KG: Machs doch selbst einmal, wär ja schön blöd, wenn PB das nicht regeln
würde, einfach in DataSection - EndDataSection und es wird, wie der Name
schon sagt, in eine eigene Sektion geschrieben.

End hat noch eine weitere Funktion, nämlich den Status des Programmes
am Ende zurückzugeben (End 0 für OK, End irgendwas für sonstwas).

Verfasst: 21.11.2006 22:38
von Kaeru Gaman
@KG: Machs doch selbst einmal
is schon ne weile her, dass wir das problem mal hatten.

...kann sein, dass der betreffende kollege End und DataSection weggelassen hatte....

is ja auch egal.

der mögliche rückgabewert ist das argument überhaupt.

..außerdem will man vielleicht zwischendrin das programm beenden,
wie z.b. nach dem message-requester, der bescheid sagt, dass kein DX gefunden wurde...