Fehler, Irrtümer, Fragen - Seite 1875
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Wahrscheinlich, weil Sie sie manuell in der Funktion OnStart() aufrufen.
Destruktoren von statischen Objekten werden nach dieser Funktion in umgekehrter Reihenfolge der Deklaration aufgerufen.
Wahrscheinlich, weil Sie sie manuell in der Funktion OnStart() aufrufen.
Destruktoren von statischen Objekten werden nach dieser Funktion in umgekehrter Reihenfolge der Deklaration aufgerufen.
Aber das Leck tritt auf. Wo liegt das Problem?
Ich denke, hier muss alles richtig funktionieren
Aber das Leck ist vorhanden. Wo liegt das Problem?
Sie legen zwei Objekte an und löschen nur eines.
Warum brauchen Sie dasCLASS::Tmp-Objekt?
Sie legen zwei Objekte an und löschen nur eines.
Zu welchem Zeitpunkt werden zwei Objekte erstellt?
Warum brauchen Sie einCLASS::Tmp-Objekt?
Dank Ihnen ist das nicht nötig. Aber um die Sprache zu verstehen, möchte ich immer noch verstehen, warum das Beispiel ein Leck verursacht.
Versteckte Objekte mit versteckten Konstruktoren sind jedoch in einigen Fällen logisch (wahrscheinlich der am weitesten verbreitete Fall).
Ja, ich habe mich geirrt. Sie haben nur ein Objekt, das erstellt und nicht gelöscht wird.
Denn wenn Sie den Konstruktor
CLASS() { CLASS::Ptr = CLASS::Tmp; }CLASS::Tmp enthält immer noch Müll, nicht die Adresse des Objekts.
2) Klasse wird erstellt, new CLASS; sie führt den Konstruktor CLASS()aus und CLASS::Ptr wird Null zugewiesen
3) Der CLASS::Tmp-Wert wird durch den Zeiger auf die neue CLASS aktualisiert
4) Löscht die Struktur PTR<CLASS> CLASS::Ptr; führt den Destruktor aus und versucht, CLASS::Ptr zu löschen (es ist Null)
CLASS::Tmp enthält immer noch Müll und keine Objektadresse.
Ich danke Ihnen! Irgendwie habe ich diese Offensichtlichkeit nicht bemerkt.
1) Es wird eine Struktur static PTR<CLASS> CLASS::Ptr angelegt;
2) Erzeugt eine Klasse, new CLASS; führt den Konstruktor CLASS()aus undCLASS::Ptr wird Null zugewiesen
3) Der CLASS::Tmp-Wert wird durch den Zeiger auf die neue CLASS aktualisiert
4) Löscht die Struktur PTR<CLASS> CLASS::Ptr; führt den Destruktor aus und versucht, CLASS::Ptr zu löschen (es ist Null)
Ich danke Ihnen. Aber es ist nicht Null, es ist Müll.
Es wäre gut, wenn der Modus
Modus würden keine Pfeile von Geschäften (Eingänge/Ausgänge) angezeigt. Sie werden dort überhaupt nicht gebraucht.