malloc/realloc richtig benutzen

janosch

Erfahrenes Mitglied
Hallo!

Ich habe in meinem Programm z.B. ein "foobar *array[10]" mit dieser Anweisung bekomme ich ja jetzt 10 zeiger vom Typ foobar. In diesem Array möchte ich jetzt Referenzen von XYZ speichern. So jetzt bemerke ich in dem Programm das mir eben 10 Pointer vom Typ foobar nicht ausreichen sondern ich benötige 5 mehr. Wie kann ich jetzt mit hilfe von malloc/realloc
für 5 weitere foobar Pointer speicher "nachreservieren", so das ich hinterher 15 Pointer vom Typ foobar habe, ohne das mir die Daten die ich vorher in dem alten array gespeichert habe verloren gehen? In C++ gibt es "new" anstelle von "malloc". Wie sieht das ganze in C++ aus?

Code schnipsel würde mir zurr erklärung reichen.

mfg Janosch
 
Hallo,

die Benutzung von malloc und realloc ist in C++ nicht gut. Das kann man
machen wenn man in C programmiert...

Besser ist vielleicht in deinem Fall die Verwendung eines std::vector:

Code:
#include <iostream>
#include <vector>

using namespace std;

class foo{
};

void needMoreFoos(vector<foo*>& f, int needed){
    for(int i = 0; i < needed; i++) f.push_back(new foo());
}   

int main(){
    vector<foo*> f;
    for(int i = 0; i < 10; i++) f.push_back(new foo());
    cout << f.size() << endl;
    needMoreFoos(f, 5); 
    cout << f.size() << endl;
    //Objekte wieder freigeben nicht vergessen
    for(int i = 0; i < f.size(); i++) delete f[i];
}

Gruß

RedWing
 
Zurück