首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL内存泄漏: libmysqlclient.18

问MySQL内存泄漏: libmysqlclient.18
EN

Stack Overflow用户
提问于 2013-03-06 17:19:19
回答 1查看 526关注 0票数 2

我日以继夜地搜索和阅读MySQL文档,但似乎就是找不到可能导致内存泄漏的原因。

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

代码:

代码语言:javascript
复制
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;
}

​

​

EN

回答 1

Stack Overflow用户

发布于 2014-01-20 16:41:39

如果启用多语句支持,则应使用调用mysql_query()的循环从对mysql_next_result()或mysql_real_query()的调用中检索结果,以确定是否存在更多结果。

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

代码语言:javascript
复制
while (mysql_next_result(connection) == 0)
{
    result = mysql_store_result(connection);
    if (result)
        mysql_free_result(result);
}

下面是文档:mysql_store_result

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15243280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档