gpt4 book ai didi

c++ - MySQL 内存泄漏 : libmysqlclient. 18

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:57:56 26 4
gpt4 key购买 nike

我尝试了日以继夜地谷歌搜索和阅读 MySQL 文档,但我似乎无法找出可能导致内存泄漏的原因。

它似乎是随机发生的,这是唯一泄漏的函数。

代码:

unsigned long numRowQuery(std::string query)
{
MYSQL *connection = mysql_init(NULL);
MYSQL_RES *result;
unsigned long num_rows;

// connecting to database
if(!mysql_real_connect(connection,SERVER,USER,PASSWORD,DATABASE,0,NULL,0))
{
std::cout << "Connection error: " << mysql_error(connection) << std::endl;
}

if (mysql_query(connection, query.c_str()))
{
std::cout << "MySQL query error: " << mysql_error(connection) << std::endl;
exit(1);
}
result = mysql_store_result(connection);
num_rows = mysql_num_rows(result);

mysql_free_result(result);
mysql_close(connection);
mysql_library_end();
return num_rows;
}

instruments cropped

最佳答案

If you enable multiple-statement support, you should retrieve results from calls to mysql_query() or mysql_real_query() by using a loop that calls mysql_next_result() to determine whether there are more results.

您软件中的某些查询可能会产生更多结果,因此,您需要在发出查询后获取所有结果。尝试将 mysql_free_result 函数调用放入循环中,如下面的代码:

while (mysql_next_result(connection) == 0)
{
result = mysql_store_result(connection);
if (result)
mysql_free_result(result);
}

这是文档:mysql_store_result

关于c++ - MySQL 内存泄漏 : libmysqlclient. 18,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15243280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com