sql >> Databáze >  >> RDS >> Mysql

Únik paměti v MySQL C++ Connector

jak navrhl WhozCraig, můžete přidat delete Driver; k vaší testovací funkci, ale doporučil bych použít auto_ptr nebo C++11 unique_ptr nebo shared_ptr pro všechno MYSQL a nikdy se nebudete muset starat o úniky paměti

vezměte si příklad

s C++11

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

nebo C++

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

UPRAVIT

nemůžete jen delete Driver , až budu mít čas, podívám se na to víc

AKTUALIZOVAT

Podíval jsem se na driver.h zdrojový kód, je to skutečně protected: virtual ~Driver() {} takže nemůžete jednoduše použít delete, jakkoli v public: jsou dva

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

což může být to, co potřebujete

existuje také tento příklad což může být velmi užitečné a dělá to trochu jinak než vy



  1. SQLite levé připojení

  2. Uložte IPV6 a IPV4 v MySql a také si jej přečtěte

  3. Získejte datum/čas z unixového časového razítka v SQLite

  4. Odstranění výchozího trasování – část 1