首页 > 解决方案 > 内存泄漏 _bstr_t 重新分配

问题描述

我是 C/C++ 和内存管理的新手

我在程序中遇到内存泄漏并使用 Visual Leak Detector 来查找。

_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);
}

并指出该行record = record + data.c_str();会导致内存泄漏。

我试过::SysFreeString(record)但没有工作

有什么方法可以做到吗?

标签: c++memory-leaks

解决方案


我认为内存泄漏发生在bstr_t赋值运算符或 + 运算符中。你应该在那里检查。


推荐阅读