c++ vector neuen löschen

Wie kann ich freien Speicher im nächsten Beispiel.
vt.pop_back() löscht element in der vt, aber es ist nicht der freie Speicher.
löschen vt[i] nicht funktioniert, und es mir "segmentation fault".

#include <vector>
#include <unistd.h>

using namespace std;

const int SIZE = 1000000;

class Test
{
public:
    Test();
    ~Test();    
private:
    int *arr;    
};


int main()
{
    vector<Test *> vt;
    for(int i = 0; i < 100; i++)
        vt.push_back(new Test());
    sleep(10);
    return 0;    
}


Test::Test()
{
    arr = new int[SIZE];
}


Test::~Test()
{
    delete[] arr;
}
  • Warum auch du mit neues?
  • Warum delete v[i] funktioniert nicht? Es gibt keine delete v[i] in diesem code.
  • da der Konstruktor kann Argumente bestehen
  • Sie können vector für arr zu.
  • Ich würde nicht empfehlen, dies zu tun. Wenn man einen Vektor von Zeigern, versucht zu kopieren, der Vektor wird nicht tun, was Sie erwarten, pops wird gelöscht, und es wird in der Regel führt zu Schmerzen und leiden, wie Sie wickeln jedes vector-Betrieb machen ihn tun die Rechte Sache mit den Pointern und Speicher. Erhöhung der ptr_vector wäre ein Beispiel für eine viel bessere Möglichkeit, dies zu tun.
  • mögliche Duplikate von Tut vector::erase() zerstören das entfernte Objekt?

InformationsquelleAutor k_zaur_k | 2012-04-09
Schreibe einen Kommentar