Löschen eines Objekts das als Referenz übergeben wurde (Newbee-Question ;-)
-
delete &bestpractice ist schon richtig. Das Leck müsste folglich auch auftreten, wenn du die Funktion einen Zeiger zurückgeben läßt und den Rest entsprechend anpasst. Ist der Destruktor von Individual vielleicht verkehrt? BTW ich hoffe, creature wird auch irgendwann deletet.
-
Bashar schrieb:
delete &bestpractice ist schon richtig. Das Leck müsste folglich auch auftreten, wenn du die Funktion einen Zeiger zurückgeben läßt und den Rest entsprechend anpasst. Ist der Destruktor von Individual vielleicht verkehrt? BTW ich hoffe, creature wird auch irgendwann deletet.
Aber die Refernez wird doch dadurch ungueltig. Auch wenn das in einem Block
gemacht wird und die Referenz am Ende des Blocks nicht mehr existiert, aendert
das doch nichts daran, dass die Referenz ungueltig wird.mfg
v R
-
Bashar schrieb:
delete &bestpractice ist schon richtig. Das Leck müsste folglich auch auftreten, wenn du die Funktion einen Zeiger zurückgeben läßt und den Rest entsprechend anpasst. Ist der Destruktor von Individual vielleicht verkehrt? BTW ich hoffe, creature wird auch irgendwann deletet.
Vielen Dank für die schnelle Hilfe
Eine Frage zum Destruktor, da hätte ich den Default gelassen, da ich es dann manuell am Ende von main() lösche, ist das nicht ok?
Ich würds gern mit Referenzen machen, damit ich das lerne
Danke für Eure Hilfe!
Jochen
-
hogg schrieb:
Bashar schrieb:
delete &bestpractice ist schon richtig. Das Leck müsste folglich auch auftreten, wenn du die Funktion einen Zeiger zurückgeben läßt und den Rest entsprechend anpasst. Ist der Destruktor von Individual vielleicht verkehrt? BTW ich hoffe, creature wird auch irgendwann deletet.
Vielen Dank für die schnelle Hilfe
Eine Frage zum Destruktor, da hätte ich den Default gelassen, da ich es dann manuell am Ende von main() lösche, ist das nicht ok?
Ich würds gern mit Referenzen machen, damit ich das lerne
Danke für Eure Hilfe!
Jochen
Deine mit new erzeugten Objekte werden nicht automatisch geloescht, wenn das
Objekt geloescht wird und du nur einen default-DTor hast.Das am Ende des Programms der gesamte Speicher freigegeben wird, darauf wuerde
ich mich nicht verlassen. Im Allgemeinen wird das wohl vom Betriebssystem so
gemacht, muss es aber nicht. Es ist immer gut, wenn man den Speicher den man
reserviert hat, auch wieder freigibt (man raeumt ja auch sein Zimmer auf, wenn
es unordentlich ist und laesst es nicht seine Mutter machen).mfg
v R
-
virtuell Realisticer schrieb:
Aber die Refernez wird doch dadurch ungueltig.
Na und? Ist doch nicht verboten.
-
Bashar schrieb:
virtuell Realisticer schrieb:
Aber die Refernez wird doch dadurch ungueltig.
Na und? Ist doch nicht verboten.
Ich dachte Referenzen muessten immer gueltig sein. Neuzuweisung ja ist nicht
moeglich.Aber wenn dem nicht so ist
[edit]
Ich glaub ich hab hier grad was verwechselt: Referenzen muessen initialisiert
werden, duerfen hier also nicht ungueltig sein.
[/edit]mfg
v R
-
Vielen Dank für Eure Antworten - hab wieder viel gelernt.
Konkret auf meine Frage bezogen, wärs klasse wenn Ìhr mir nochmal helfen könntet.
Ich hätte jetzt verstanden: der Code ist eigentlich formal so richtig, das Objekt auf das die Refenrenz zeigt, sollte eigentlich gelöscht werden durch: delete & bestpractice; Oder versteh ich das falsch?
Was würdet Ihr mir dann als nächsten Schritt empfehlen, wenn es aber trotzdem nicht läuft und ich es mit einer Refernz lösen möchte?
Sorry, für meine hartnäckigkeit, aber ich würde das sehr gerne lernen
Danke Euch vielmals!
hogg
-
Zeig mal Konstruktor und Destruktor von der Individual-Klasse.
-
Bashar schrieb:
Zeig mal Konstruktor und Destruktor von der Individual-Klasse.
Danke Dir Bashar!
Der Konstruktor ist der Folgende:
Individual::Individual(int zid, int zgeneration)
{
id = zid;
generation = zgeneration;
varianz = 10;
props_max=255;
for (int i = 0; i < 300; i++)
{
props[i]=(rand()%(props_max+1));
}
}Als Destruktor verwende ich nur den default-Destruktor.
Danke Dir nochmal
hogg
-
Der leakt offensichtlich nicht. Komisch.