Christian: (C++) Was muss alles per "delete" gelöscht werden?

Beitrag lesen

Hallo,

ich schreiben gerade an einem Programm in C++, und nach mehrmaligem Ausführen und Erzeugen neuer Instanzen (innerhalb des Programms), kam irgendwann die Meldung: "Wenig virtueller Speicher". Ui ui ui dachte ich.

Hatte natürlich meine Objekte nicht deleted.
Nun die Frage, was muss ich denn alles deleten?

//// 1. ////
Auch Objekte, die lokal innerhalb einer Methode mit new erzeugt wurden?
Also
void Test()
{
    MyClass *mc = new MyClass();

// [...]
    delete mc; // ????
}

Oder werden diese automatisch gelöscht?

//// 2. ////
Oder Objekte, die Eigenschaften einer Klasse sind?

class MyClass
{
MyClass2 *mc;
};

void MyClass::Methode()
{
   mc->myMethod();
}
MyClass::~MyClass()
{
  delete mc; // ???????
}

//// 3. ////
Objekte die NICHT als Referenz angelegt wurden?
void Method()
{
  MyClass mc;
  mc.Method();

// delete mc; ?????
}

//// 4. ////
Objekte, die Eigenschaften einer Klasse sind, aber nicht als Referenz angelegt sind.
class MyClass
{
   MyClass2 mc2;
};

Bitte um Hilfe!

Danke,
Christian