Ich bin ziemlich neu in C++ Speicherverwaltung, weil im Gegensatz zu C, gibt es mehr Hürden, um den gesamten Speicher zu befreien.Wie lösche ich wirklich Vektoren
Ich versuche
einen Zeiger auf Vektor von jeder Art (dh Vektor * data)/**
* We test the program in accessing vectors
* with dynamic storage
**/
#include <iostream>
#include <vector> // you must include this to use vectors
using namespace std;
int main (void){
// Now let's test the program with new and delete
// for no memory leaks with vectors (type safe)
// however, just calling delete is not enough to free all memory
// at runtime
vector <int> * test_vect = new vector <int> (10,5);
// Print out its size
cout << "The size of the vector is " << test_vect->size()
<< " elements" << endl;
// run through vector and display each element within boundary
for (long i = 0; i < (long)test_vect->size(); ++i){
cout << "Element " << i << ": " << test_vect->at(i) << endl;
}
delete test_vect;
return EXIT_SUCCESS;
}
jedoch erfolgreich zu löschen, ich einen Speicherverlust erhalten, nachdem valgrind mit
==2301== HEAP SUMMARY:
==2301== in use at exit: 4,184 bytes in 2 blocks
==2301== total heap usage: 4 allocs, 2 frees, 4,248 bytes allocated
==2301==
==2301== LEAK SUMMARY:
==2301== definitely lost: 0 bytes in 0 blocks
==2301== indirectly lost: 0 bytes in 0 blocks
==2301== possibly lost: 0 bytes in 0 blocks
==2301== still reachable: 4,096 bytes in 1 blocks
==2301== suppressed: 88 bytes in 1 blocks
Wie kann ich in der Lage sein, alle Spuren von Speicherlecks mit Zeiger auf Vektor (dh zur Laufzeit) loszuwerden?
'Vektor * test_vect = ...' trotzt den eigentlichen Zweck aufrufen müssen, warum Vektor in erster Linie vorhanden ist. –
Nawaz
Warum verwenden Sie Zeiger mit Vektoren ..? – Rapptz
"denn im Gegensatz zu C gibt es mehr Hürden, um alle Speicher zu befreien." Wat. – GManNickG