c++ - 内存泄漏 _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)
但没有工作
有什么方法可以做到吗?
解决方案
我认为内存泄漏发生在bstr_t
赋值运算符或 + 运算符中。你应该在那里检查。
推荐阅读
- javascript - 如何修复 requestAnimationFrame() 函数中的参数编辑问题
- javascript - 当仅选中某个复选框时,必须写入 textarea
- c# - 需要将一个类转换为另一个具有不同值集合的类
- jms - 计算 MDB Jms 中的重新交付
- c - 静态数组 - 我应该在哪里定义它?
- ios - ionic 4 应用程序在 ios 上显示白屏,错误代码为 1100
- r - 如何从R中的函数返回中获取变量值
- sql-server - T-SQL。如何实现多行与单行转换
- 2d - Godot:如何实现二维固定关节?
- python-3.x - 删除字符串的类型,使其成为同名变量