Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 内存泄漏-重新分配_C++_Memory Leaks - Fatal编程技术网

C++ 内存泄漏-重新分配

C++ 内存泄漏-重新分配,c++,memory-leaks,C++,Memory Leaks,我不熟悉C/C++和内存管理 我在程序中得到内存泄漏,并使用可视泄漏检测器来查找 _bstr_t record = ""; for (int rownum = 0; rownum < num_rows; ++rownum) { const int num_cols = PQnfields(res2); for (int colnum = 0; colnum < num_cols; ++colnum) { if (PQgetisnull(res2,

我不熟悉C/C++和内存管理

我在程序中得到内存泄漏,并使用可视泄漏检测器来查找

_bstr_t record = "";

for (int rownum = 0; rownum < num_rows; ++rownum) {
    const int num_cols = PQnfields(res2);

    for (int colnum = 0; colnum < num_cols; ++colnum) {
        if (PQgetisnull(res2, rownum, colnum) == 0) {
            string data = PQgetvalue(res2, rownum, colnum);
            record = record + data.c_str();
        }
        else
        {
            record = record + L"<NULL>";
        }

        if (colnum + 1 < num_cols) {
            record = record + "#";
        }
    }
    recordMap[rownum] = record;
    PQclear(res2);
}
\u bstr\u t record=“”;
对于(int rownum=0;rownum
并指出line
record=record+data.c_str()使内存泄漏

我尝试了
::SysFreeString(record)
,但没有成功


有什么办法吗?

我认为内存泄漏发生在
bstr\u t
赋值运算符或+运算符中。你应该查一下。

什么是
bstr\u t
?@Shawn我错了。这应该是同一个问题。这是你从图书馆写的东西吗?肖恩,是的,这是从图书馆写的。提到哪一个会有帮助……嗨,奎潘。我想是的,但我不知道如何修复这里,你能帮我一个建议吗?试着用record+=data.c_str()替换它;不确定它是否有效,但如果无效,我将进一步帮助你。思考是好的,似乎很少有人这样做,但了解更好。为了让这成为一个好的答案,你应该解释你为什么会这样想,并提供如何解决它的建议。