Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyciek pamięci w MySQL C++ Connector

jak zasugerował WhozCraig, możesz dodać delete Driver; do funkcji testowej, ale sugerowałbym użycie auto_ptr lub C++11 unique_ptr lub shared_ptr dla wszystkiego MYSQL i nigdy nie będziesz musiał się martwić o wycieki pamięci

weź to na przykład

z C++11

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

lub C++

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

EDYTUJ

nie możesz po prostu delete Driver , zajmę się tym bardziej, gdy będę miał czas

AKTUALIZUJ

Przejrzałem driver.h kod źródłowy, rzeczywiście jest protected: virtual ~Driver() {} więc nie możesz po prostu użyć usunięcia, jakkolwiek w public: są dwa

virtual void threadInit() = 0;

    virtual void threadEnd() = 0;

co może być tym, czego potrzebujesz

jest też ten przykład co może być bardzo przydatne i robi to trochę inaczej niż ty



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zresetować słowa stop w MYSQL?

  2. PHP Podczas gdy pętla wyświetla tylko ostatni wiersz

  3. Wybierz wiele sum za pomocą zapytania MySQL i wyświetl je w osobnych kolumnach

  4. Spring Boot nie może połączyć się z MySQL i kończy pracę w Docker/Docker compose

  5. Zapytanie MySQL oparte na danych wprowadzonych przez użytkownika