Boost ptr_vector Elemente löschen



  • Hallo,

    ich habe ein problem mit dem ptr_vector aus boost. Mein vorgehen war folgendes:

    Ich habe eine test klasse angelegt, diese verwendet, und das ganze dann mit valgrind auf speicherfehler getestet. Valgrind hat ein problem festgestellt, welches im destructor meiner test klasse ist, und zwar bei erase() vom ptr_vector.

    Kann mir bitte jemand sagen, was ich da falsch gemacht habe? Ich dachte eigentlich, ich hätte nach bestem wissen und gewissen meine objekte angelegt und dann im destructor wieder zerstört.

    Danke!

    class TestClass
    {
    	private:
    		typedef boost::ptr_vector<MyObject> MyObjectVector;
    
    	public:
    		[...]
    		virtual ~TestClass();
    
    		void runTestClass();
    
    	private:
    		void addObject(MyObject *obj);
    
    		MyObjectVector p_my_object_vector;
    }
    
    TestClass::runTestClass()
    {
    	addObject(new MyObject(1));
    	addObject(new MyObject(2));
    	addObject(new MyObject(3));
    	addObject(new MyObject(4));
    	addObject(new MyObject(5));
    }
    
    TestClass::addObject(MyObject *obj)
    {
    	p_my_object_vector.push_back(obj);
    }
    
    TestClass::~TestClass()
    {
    	p_my_object_vector.erase(p_my_object_vector.begin(), p_my_object_vector.end());
    }
    


  • Steini79 schrieb:

    Kann mir bitte jemand sagen, was ich da falsch gemacht habe?

    Ja, du hast dich nicht an die Netiquette gehalten. Deshalb hast du nicht die mit wichtig gekennzeichneten Threads gelesen, bevor du deine Frage gestellt hast. Deshalb (und weil du vermutlich auch nicht so genau drüber nachgedacht hast) hast du uns weder den nötigen Code (übersetzbar, reduziert, mit nachstellbarem Problem) noch die Fehlermeldung geliefert. Und deshalb hast du sowohl deine als auch unsere Zeit verschwendet, weil dir so mangels Infos keiner so recht weiterhelfen kann.



  • Hallo,

    danke für deine antwort.

    Ich dachte event. erkennt jemand an dem beispiel einen fehler oder sagt mir, dass ich die erase() methode von ptr_vector falsch verwende.

    Ich werde selbstverständlich noch ein kompilierbares minimalbeispiel und die meldungen von valgrind nachliefern.


Anmelden zum Antworten