Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Speicherleck im MySQL C++ Connector

Wie WhozCraig vorgeschlagen hat, können Sie delete Driver; hinzufügen zu Ihrer Testfunktion, aber ich würde vorschlagen, auto_ptr zu verwenden oder der C++11 unique_ptr oder shared_ptr für alles MYSQL und Sie müssen sich nie um Speicherlecks sorgen

Nehmen Sie dies zum Beispiel

mit C++11

std::unique_ptr< sql::Connection > con( driver->connect("tcp://127.0.0.1:3306", "root", "root"));

oder C++

std::auto_ptr< sql::Connection > con( driver->connect("tcp://127.0.0.1:3306", "root", "root"));

BEARBEITEN

Sie können nicht einfach delete Driver , ich werde mich genauer damit befassen, wenn ich Zeit habe

AKTUALISIEREN

Ich habe die driver.h durchgesehen Quellcode, es ist tatsächlich protected: virtual ~Driver() {} Sie können also nicht einfach löschen, jedoch in public: es gibt zwei

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

das könnte sein, was Sie brauchen

es gibt auch dieses Beispiel das kann sehr nützlich sein und tut dies etwas anders als Sie