c ++ - mysql连接器保持连接打开

时间:2017-08-02 15:02:18

标签: c++ mysql memory-leaks

我在c ++中构建了一个rest api,我的程序总是在云端运行。我使用mysql连接器进行c ++与mysql数据库的通信。

例如,建立连接:

sql::mysql::MySQL_Driver *driver;
sql::Connection *con;

driver = sql::mysql::get_mysql_driver_instance();
con = driver->connect("tcp://127.0.0.1:3306", "user", "password");

delete con;

如果你看到我不需要更多的con对象我需要删除它并释放内存("确保你释放con,sql :: Connection对象,只要你不再需要它了。" by - > https://dev.mysql.com/doc/connector-cpp/en/connector-cpp-examples-connecting.html)。但在我的情况下,我认为对每个请求没有意义创建一个新的con

如果它是rest api并且它们总是实时运行我认为创建单个连接更优雅,并且在每个请求中我使用该连接。例如,如果我对同一件事(用户信息)有10个请求,那么创建和删除10个连接并不优雅......

我尝试这个解决方案(当我第一次运行程序时创建一个单独的连接并始终使用相同的连接),它的工作原理但是将来它会导致内存泄漏,因为我永远不会释放内存到con和其他人反对它始终需要在每个数据库请求中使用。在这种情况下,我无法释放con对象,因为在下一个请求中我得到segmentation fault,因为我已经deletefree con对象并且没有创建因为我只在第一个程序运行中创建连接,并且我保持该连接始终打开。

所以有一些方法可以始终保持连接打开而不会出现内存泄漏问题?

0 个答案:

没有答案