Утечка памяти _bstr_t перераспределение - PullRequest
0 голосов
/ 26 марта 2019

Я новичок в 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), но не работает

Есть ли способ сделать это?

1 Ответ

0 голосов
/ 26 марта 2019

Я думаю, что утечка памяти происходит в bstr_t операторе присваивания или операторе +. Вы должны проверить там.

...