sql >> Database >  >> RDS >> Mysql

Geheugenlek in MySQL C++ Connector

zoals WhozCraig suggereerde, kun je delete Driver; . toevoegen naar uw testfunctie, maar ik zou willen voorstellen om auto_ptr . te gebruiken of de C++11 unique_ptr of shared_ptr voor alles MYSQL en u hoeft zich nooit meer zorgen te maken over geheugenlekken

neem dit bijvoorbeeld

met C++11

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

of de C++

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

BEWERKEN

je kunt niet zomaar delete Driver , ik zal er meer naar kijken als ik tijd heb

UPDATE

Ik heb de driver.h . doorgenomen broncode, het is inderdaad protected: virtual ~Driver() {} dus je kunt niet zomaar een delete gebruiken, maar in public: er zijn twee

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

dat is misschien wat je nodig hebt

er is ook dit voorbeeld die erg handig kan zijn en dit een beetje anders doet dan jij



  1. Hoe retourneer ik willekeurige getallen als een kolom in SQL Server 2005?

  2. Mysql-prestaties op een tabel met 6 miljoen rijen

  3. Nieuw gebruikers- en LDAP-beheer in ClusterControl 1.8.2

  4. Hoe het aantal rijen voor alle tabellen in een SQL SERVER-database op te halen