1.2k Aufrufe
Gefragt in Anwendungen(Java,C++...) von varginator Einsteiger_in (29 Punkte)
Hallo Leute,

zurzeit programmiere ich verstärkt mit verschiedenen Klassen,
was nun zu meiner Frage hinführt:


Ich will den Speicher dynamisch verwalten, d.h. ich möchte, wenn man das Programm beendet (oder nur die klasse deinitialisiert [evtl mit ner delete Funktion ...]), dass alle Variablen der Klasse gelöscht werden.

Ich hab mir schon ein bisschen was überlegt:

In der Klasse einen Vector der einen Pointer auf die neue Variable hat, und dann muss man einfach den Speicherbereich löschen auf den der Pointer zeigt.

In etwa so:
class CKlasse {
vector <CKlasse> liste;
//dann halt noch des ganze Konstruktor zeugs und so was ...
}

CKlasse::CKlasse{
//dann hier im Konstruktor irgendwie den Pointer in den Vector
//evtl. so
CKlasse::liste.push_back(this*); //so Funktioniert das aber nich ganz
}


Bin gerne auch für andere Vorschläge offen ...


Gruß Simon

2 Antworten

0 Punkte
Beantwortet von lorf55 Mitglied (699 Punkte)
Hallo Simon,

Ich will den Speicher dynamisch verwalten, d.h. ich möchte, wenn man das Programm beendet (oder nur die klasse deinitialisiert [evtl mit ner delete Funktion ...]), dass alle Variablen der Klasse gelöscht werden.
Also dafür musst du dich in Zeiten von Gigabyte RAM nicht mehr mit Pointer und Templates quälen (es sein du willst das üben): Einfach alle benutzten Variablen in der jeweiligen Klasse unterbringen.Wenn du willst, kannst du denn die Klasse dynamisch (wenn es denn wirklich sein muss) anlegen und verschwinden lassen. Ist einfacher, stressfreier und auch für einen Laien überschaubar. Und auch in 5 Jahren weißt du denn noch, wenn du in deinen Code schaust, was wo passiert.
Also z.B. im Konstruktor der übergeordneten Klasse
CKlasse* pKlasse = new CKlasse(initvalue);
und am Ende in dessen Destruktor
delete pKlasse
.
Wenn man denn die Klassen klein hält, weil man das große Problem in viele kleine aufgeteilt hat, braucht man sich um einzelne Variablen keine Gedanken mehr machen.

Man sollte immer alles so einfach wie möglich halten. Schon im eigenen Interesse. Und man muss auch nicht alles machen, was machbar ist.

Na gut, das waren meine 2 Cent zu dem Thema.
Gruß
lorf
0 Punkte
Beantwortet von varginator Einsteiger_in (29 Punkte)
Hallo lorf,


danke für deine gute Antwort, auf diese Idee bin ich überhaupt nicht gekommen.

Es ist halt so, dass ich eine eigene Bibliothek für mich schreibe und in eine dll verpacke, dann wollte ich halt, dass ich den Speicher dynamisch verwalte, um es so ressourcensparen wie möglich zu machen.

Eigentlich wollt ich es auch nur ausprobieren ...


Gruß Simon
...