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.


Anmelden zum Antworten