GetText() memoryleak
GetText() memoryleak
本文关键字:memoryleak GetText 更新时间:2023-10-16
这是我的第一篇文章,所以要温柔:D
我刚刚开始从事这项工作,我的第一个任务是找到我所做的泄漏,评论指出。我控制点击的 gettext() 并得到
virtual System::WideChar * __fastcall GetText(void);
我添加了 5 个额外的 pwide,泄漏增加了(任务主机中的内存使用量增加了 1000)。
我尝试删除和免费,但我得到例外。有人对如何堵漏有任何建议吗?
这是我的代码:
UnicodeString CReportManager::GetFinalHTML()
{
UnicodeString ret = "";
ret = "<Reports>";
if( ErrorHTML->Count )
{
ret += "<Errors>" + UnicodeString(ErrorHTML->GetText()) + "</Errors>";
}
//System::WideChar *pWide= ReportHTML->GetText();
//System::WideChar *pWide4= ReportHTML->GetText();
//System::WideChar *pWide1= ReportHTML->GetText();
//System::WideChar *pWide2= ReportHTML->GetText();
//System::WideChar *pWide3= ReportHTML->GetText();
//delete pWide;
// free(pWide);
//ret +=pWide;
ret += ReportHTML->GetText(); //leak here
ret += "</Reports>";
#ifdef _DEBUG
ReportHTML->SaveToFile("C:\debug.xml");
#endif
delete ReportHTML;
delete ErrorHTML;
ReportHTML = NULL;
ErrorHTML = NULL;
return ret;
}
好的,我找到了答案,如果有人有同样的问题,解决方案是StrDispose(pWide);
我尝试了所有 4 个额外的pWide
,我的内存泄漏消失了:
UnicodeString CReportManager::GetFinalHTML()
{
UnicodeString ret = "";
ret = "<Reports>";
if( ErrorHTML->Count )
{
ret += "<Errors>" + UnicodeString(ErrorHTML->GetText()) + "</Errors>";
}
System::WideChar *pWide= ReportHTML->GetText();
//delete pWide;
//free(pWide);
ret +=pWide;
StrDispose(pWide);
//ret += ReportHTML->GetText(); //leak here
ret += "</Reports>";
#ifdef _DEBUG
ReportHTML->SaveToFile("C:\debug.xml");
#endif
delete ReportHTML;
delete ErrorHTML;
ReportHTML = NULL;
ErrorHTML = NULL;
return ret;
}
相关文章:
- 静态成员变量不会由 gettext 转换
- 使用std :: unique_ptr时的memoryLeak
- GetText PO文件格式
- 修改 gettext .pot 文件输出以排除空字符串或仅包含空格的字符串
- 在本地目录中使用gettext没有任何效果
- C++变量从 GETTEXT 获取为mysql_query变量
- GetText() memoryleak
- qt: QInputDialog::getText don't work
- Linphone编译-Mingw 64位-找不到GNU gettext工具;intltool需要
- gettext-加载本地目录
- Memoryleak with QListWidget addItem() + setItemWidget()
- GNU Gettext和宽字符
- 重新编译libiconv, gettext在已经成功安装后出现未定义的符号
- 如何使用参数调用GNU gettext()
- gettext字符编码