sql >> Databasteknik >  >> RDS >> Mysql

Minnesläcka i MySQL C++ Connector

som WhozCraig föreslog kan du lägga till delete Driver; till din testfunktion men jag skulle föreslå att du använder auto_ptr eller C++11 unique_ptr eller shared_ptr för allt MYSQL och du behöver aldrig oroa dig för minnesläckor

ta detta till exempel

med C++11

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

eller C++

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

REDIGERA

du kan inte bara delete Driver , jag ska titta närmare på det när jag har tid

UPPDATERA

Jag tittade igenom driver.h källkoden, den är verkligen protected: virtual ~Driver() {} så du kan inte bara använda en radera, hur som helst i public: det finns två

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

vilket kan vara vad du behöver

det finns också detta exempel vilket kan vara mycket användbart och gör detta lite annorlunda än du



  1. Varför finns null<>null=null i mysql

  2. Få en lista över datum mellan två datum med hjälp av en funktion

  3. psql-klienten kan vara ett schackbräde nu...

  4. .NET CORE MySql MaxPoolSize tillämpas inte i