sql >> Database teknologi >  >> RDS >> Mysql

Hukommelseslækage i MySQL C++-stik

Som WhozCraig foreslog, kan du tilføje delete Driver; til din testfunktion, men jeg vil foreslå at bruge auto_ptr eller C++11 unique_ptr eller shared_ptr for alt MYSQL, og du behøver aldrig at bekymre dig om hukommelseslækager

tag dette for eksempel

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"));

REDIGER

du kan ikke bare delete Driver , jeg vil se nærmere på det, når jeg har tid

OPDATERING

Jeg kiggede gennem driver.h kildekoden, den er faktisk protected: virtual ~Driver() {} så du kan ikke bare bruge en slet, men i public: der er to

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

hvilket kan være, hvad du har brug for

der er også dette eksempel hvilket kan være meget nyttigt og gør dette lidt anderledes end dig



  1. Brug af StringWriter til XML-serialisering

  2. Kald til et medlem funktion result() ved hjælp af CodeIgniter

  3. Hurtigere måde at indsætte, via script, i Oracle?

  4. Påkrævet felt(er) mangler resultat