Welcher ist der richtige Weg, um Speicher über new
im C++ - Konstruktor zuzuweisen. Erste Art und Weise in der Argumentliste:Was ist der richtige Weg, um Speicher im C++ - Konstruktor zuzuordnen?
class Boda {
int *memory;
public:
Boda(int length) : memory(new int [length]) {}
~Boda() { delete [] memory; }
};
oder im Körper des Konstruktor:
class Boda {
int *memory;
public:
Boda(int length) {
memory = new int [length];
}
~Boda() { delete [] memory; }
};
Danke, Boda cyclo.
Ich weiß, das ist nur Beispielcode, aber wie geschrieben, hat die Klasse schwerwiegende Speicherverwaltungsprobleme (die Standard-Kopie ctor wird ermöglichen, Speicher mehrfach freigegeben zu werden). Verwenden Sie RAII, verwenden Sie intelligente Zeiger oder Container. mit der richtigen RAII können Sie finden, dass Sie nicht brauchen, um sich überhaupt zu löschen –
@jk: Abgesondert würde ich eine 'std :: vector' bevorzugen. –
fredoverflow