帮忙看段代码,哪泄露了

postyourinformation 2011-05-14 11:03:54

int keylen=strlen(key);
CString m_FilePath;
CFileDialog dlg(TRUE,L"",L"",4|2,L"所有文件(*.*)|*.*||",0,0);
int iIndex=dlg.DoModal();
if (iIndex==IDCANCEL)
{
AfxMessageBox(L"你选择了取消");
return;
}
else if (iIndex==IDOK)
{
UpdateData(TRUE);
m_FilePath = dlg.GetPathName();
UpdateData(FALSE);
}
CFile myFile(m_FilePath,CFile::modeRead);
DWORD myFileLen = myFile.GetLength();
BYTE* fileBuffer = new BYTE[myFileLen];
myFile.Read(fileBuffer,myFileLen);
myFile.Close();
for(int i=0;i<myFileLen;i++)
{
fileBuffer[i] ^= key[i%keylen];
}
CFile myFile2(m_FilePath,CFile::modeWrite);
myFile2.Write(fileBuffer,myFileLen);
myFile2.Close();
delete []fileBuffer;
AfxMessageBox(L"加密完成");



该段代码为button的事件。
其中key为全局
const char key[]="helloworld";
使用一次增长一次。。。。
...全文
113 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixiang1983 2011-05-16
  • 打赏
  • 举报
回复
代码没什么问题啊!
LZ何以得知代码内存泄漏的?
天外来客-007 2011-05-15
  • 打赏
  • 举报
回复
没有看出内存泄露!观望高手解答!
chenjiawei007 2011-05-15
  • 打赏
  • 举报
回复
BYTE* fileBuffer = new BYTE[myFileLen];
myFile.Read(fileBuffer,myFileLen);
myFile.Close();
for(int i=0;i<myFileLen;i++)
{
fileBuffer[i] ^= key[i%keylen];
}
CFile myFile2(m_FilePath,CFile::modeWrite);
myFile2.Write(fileBuffer,myFileLen);
myFile2.Close();
delete []fileBuffer;


这期间没有异常退出就不会有内存溢出,检查下其他地方。
瓶盒 2011-05-15
  • 打赏
  • 举报
回复
代码应该没问题,如果是从任务管理器中看到内存增长,不能说明是内存泄漏。
nevergiveupc 2011-05-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chenjiawei007 的回复:]

BYTE* fileBuffer = new BYTE[myFileLen];
myFile.Read(fileBuffer,myFileLen);
myFile.Close();
for(int i=0;i<myFileLen;i++)
{
fileBuffer[i] ^= key[i%keylen];
……
myFile2.Close();
delete []fileBuffer;
[/Quote]
个人认为应该在 delete []fileBuffer;之后再加一句fileBuffer = NULL;
应该就没事了吧。
许文君 2011-05-14
  • 打赏
  • 举报
回复
你是如何测试增长的?我使用你的代码测试了100次,发现没什么问题。

16,471

社区成员

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

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

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