FreeMemory und End?

Anfängerfragen zum Programmieren mit PureBasic.
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

FreeMemory und End?

Beitrag 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
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
a14xerus
Beiträge: 1440
Registriert: 14.12.2005 15:51
Wohnort: Aachen

Beitrag 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
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag 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
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

Nagut da hab ich ein ?Vorteil?

Ich setze Data's an den anfang.

Hat bisher immer geklappt

Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

na und? du hast gefragt, wozu ein End gut ist.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
mknjc
Beiträge: 217
Registriert: 09.09.2006 12:59

Beitrag von mknjc »

Gut also macht End genau das was das Ende des Programms macht.

Mfg mknjc
Ich nutze PureBasic 4.02 unter Linux und Windows.

Momentane Projekte:
Das geheimste aller geheimen Projekte... FPBC
Benutzeravatar
remi_meier
Beiträge: 1078
Registriert: 29.08.2004 20:11
Wohnort: Schweiz

Beitrag 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).
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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...
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten