Objekte: Speicher neu zuweisen nach new
-
Hallo,
kann ich für Objekte auf diese Weise Speicher alloziieren?
int n=5; classX *feldX = new feldX[n]; //.. // feldX wird initialisiert for(int i=0;i<n;++i){ feldX[n].setWert(3.0); // etc. } //.. classX *temp = feldX = new classX[2*n]; std::copy(feldX , feldX + n, temp); // funktioniert copy mit Objekten (Konstruktor?)? delete [] feldX; feldX = temp;
Bisher hab ich Klassenobjekte mit malloc alloziiert und dann mit realloc realloziiert! Mein Programm krachte ... jetzt weiß ich warum: mit malloc,realloc,calloc werden keine Konstruktoren erzeugt!
Kann ich mit Klassenobjekten memcpy oder copy durchführen?
Ciao
-
std::copy funktioniert, aber memcpy funktioniert nicht.
Aber warum verwendest Du nicht gleich std::vector?
-
du hast 1 new und 1 delete
folglich ist der gesamte speicher deleted und die Zuweisung feldX=temp; ist sinnlos, da ja beide auf den selben (nicht mehr existenten) speicher zeigen.