Angenommen, es gibt diesen Code:
class CFoo
{
public:
CFoo()
{
iBar = new CBar();
}
private:
CBar* iBar;
};
....
CFoo* foo = new CFoo();
Wenn die obige Zeile ausgeführt wird, wird zunächst Speicher für das CFoo-Objekt zugewiesen. Aber wenn die Zeile new CBar() eine Ausnahme auslöst (wegen Speichermangels), gibt das System dann automatisch den Speicher frei, der zuvor dem CFoo-Objekt zugewiesen wurde? Ich nehme an, dass es das tun muss, kann aber keinen ausdrücklichen Hinweis darauf finden. Wenn dies nicht der Fall ist, wie kann dann der Speicher vom Programmierer freigegeben werden, da er nicht foo zugewiesen wurde?