请问这是哪里泄漏呢?请大神指教,先谢谢了!

大漠飞狐 2015-08-09 08:23:38
这是线程函数,如果这个函数代码为空的时候,没有出问题,所以就是这个函数的代码出问题。下面的 “.Empty()"是后加的,加不加都是一样的错误提示。
UINT ReadWebFile(LPVOID pParam)
{
// ------------------------------读网络内容
CInternetSession session;
CString url = "http://115.159.63.120/mysoft/20150809.txt";

try
{
CHttpFile* pFile = (CHttpFile*)session.OpenURL(url,1,INTERNET_FLAG_TRANSFER_ASCII | INTERNET_FLAG_RELOAD, NULL, 0);
DWORD dwRet;
int row;
CString str;
CString outText[20];
for (int i = 0; i < 20; i++)
outText[i].Empty();
int outTextRow = 0;
pFile->QueryInfoStatusCode(dwRet);
switch (dwRet)
{
case 200:
do
{
row = pFile->ReadString(str);
outText[outTextRow] = str;
outTextRow++;
str.Empty();
} while (row>0);
if (outText[0] == "stop")
{
AfxMessageBox("本软件已停止运行,请下载最新版!");
exit(0);
}
g_GM.m_OKTest.m_nErrorLinkWeb=-1;
pFile->Close();
for (int i = 0; i < 20; i++)
outText[i].Empty();
break;
default:
g_GM.m_OKTest.m_nErrorLinkWeb++;
}
}
catch (CInternetException* pEx)
{
pEx->Delete();
g_GM.m_OKTest.m_nErrorLinkWeb++;
}
session.Close();

}

return 0;
}


下面是程序结束后显示的提示:
Detected memory leaks!
Dumping objects ->
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6474} normal block at 0x003C1598, 20 bytes long.
Data: <x 3 > 78 C5 33 10 03 00 00 00 03 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6473} normal block at 0x003CFAD0, 37 bytes long.
Data: <x 3 > 78 C5 33 10 14 00 00 00 14 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6472} normal block at 0x003B4E88, 31 bytes long.
Data: <x 3 > 78 C5 33 10 0E 00 00 00 0E 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\strcore.cpp(156) : {6471} normal block at 0x003BBB18, 37 bytes long.
Data: <x 3 > 78 C5 33 10 14 00 00 00 14 00 00 00 01 00 00 00
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\inet.cpp(618) : {6470} client block at 0x003F78F0, subtype c0, 80 bytes long.
f:\dd\vctools\vc7libs\ship\atlmfc\src\mfc\dumpcont.cpp(23) : atlTraceGeneral - a CHttpFile object at $003F78F0, 80 bytes long
...全文
209 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
大漠飞狐 2015-08-16
  • 打赏
  • 举报
回复
vs2013
二班的码农 2015-08-13
  • 打赏
  • 举报
回复
引用 6 楼 cyjcn1 的回复:
我试过了,没有pFile->Delete(); 我在网上搜了半天,才知道是 delete pFile; 然后可以了。
这是什么编译器,没有Delete方法,编译还能通过,我也是醉了
大漠飞狐 2015-08-12
  • 打赏
  • 举报
回复
要先close 再 delete
大漠飞狐 2015-08-12
  • 打赏
  • 举报
回复
我试过了,没有pFile->Delete(); 我在网上搜了半天,才知道是 delete pFile; 然后可以了。
大漠飞狐 2015-08-12
  • 打赏
  • 举报
回复
以上几点都试了一下,还是一样。
			do
			{
				row = pFile->ReadString(str);
				outText[outTextRow] = str;
				outTextRow++;
			} while (row>0 && outTextRow<20);
测了一下,也只到13,
二班的码农 2015-08-10
  • 打赏
  • 举报
回复
pEx->Delete(); 楼主,为何要释放一个异常对象
快乐鹦鹉 2015-08-10
  • 打赏
  • 举报
回复
do { row = pFile->ReadString(str); outText[outTextRow] = str; outTextRow++; str.Empty(); } while (row>0); 你数组的长度只有20,这个循环没有任何的控制,很容易溢出啊
oyljerry 2015-08-10
  • 打赏
  • 举报
回复
pFile->Close
要关闭一下
「已注销」 2015-08-10
  • 打赏
  • 举报
回复
pFile->Close(); 之前加一句: pFile->Delete();

16,372

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧