【发布时间】:2013-07-27 16:45:39
【问题描述】:
我有一个应用程序在获取大型结果集时会占用内存(我的 blob 字段可以轻松运行几千字节)。经过大量搜索,我想我已经跟踪到 resultset::getblob() 的泄漏。如果我注释掉 getblob 行,它会正常运行。如果我把它留在结果集中没关系,但是一旦我调用 getblob,我就会听到那种吸吮的声音,那就是记忆从管子里流下来。
查看连接器的代码,我发现它返回了一个“新”字符串流。我认为这是罪魁祸首。这个“新”在哪里被删除?我确实删除了结果集和preparedstatement。也尝试关闭结果集无济于事。我看到的任何例子似乎都没有解决这个问题。
有人对此有任何经验/解决方法吗?
TIA!
【问题讨论】:
-
自发布以来,我发现替换:“v_sql_area.v_res->getBlob("field_name")->get(buffer, 2048);"使用“istream *blob_ret = (v_sql_area.v_res->getBlob("field_name")); blob_ret->get(buffer, 2048); 删除 blob_ret;”似乎可以解决(或至少破解)这个问题。仍然欢迎任何其他解决方案!
标签: c++ mysql memory resultset