内存释放问题 ,求助

fyz2841585 2010-11-11 09:55:40
void CToolViewDLG::OnOpendirector()
{
CString str[888];
TCHAR *pszFile = new TCHAR[MAX_PATH * MAX_PATH];
memset(pszFile,0,sizeof(TCHAR)*MAX_PATH * MAX_PATH);

CFileDialog dlg(
TRUE,
NULL,
NULL,
OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT |OFN_ALLOWMULTISELECT|OFN_ENABLESIZING ,
_T("Task Files (*.dcm)|*.dcm|All Files (*.*)|*.*||"),
NULL);
dlg.m_ofn.lpstrFile = pszFile;
dlg.m_ofn.nMaxFile = MAX_PATH*MAX_PATH;
if(dlg.DoModal()==IDOK)
{
POSITION ps = dlg.GetStartPosition();

while(ps)
{
str[i] = dlg.GetNextPathName(ps);
charpoint=str[i].GetBuffer(str[i].GetLength());
i++;
BAddImage(lpImageApi, _T(charpoint ));////验证这步

}



i=0;
BRefreshImageWnd(lpImageApi, 0);/////从这步开始
}
delete pszFile;
}

我的这个是通过点击按钮的响应函数,打开N张图片,可以多次点击这个按钮,但是运行多了之后,发现内存逐渐的增多,求高手救命。

...全文
131 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
fyz2841585 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 m617105 的回复:]

你的n张图片打开都到内存了?
[/Quote]
??
fyz2841585 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 xiaoyilong19 的回复:]

delete pszFile => delete[] pszFile;不过有时候也没有根本影响,其他地方,你还是逐步注释这个函数的各个功能,然后运行后,确定到底那个地方出现问题,你里面有好几个自定义函数,内部操作看不到
[/Quote]
图片的内存都已经释放过了,点击这个按钮多次之后才增加1M,说明不是图像的内存没有释放,只是某些数组的问题啊
fyz2841585 2010-11-11
  • 打赏
  • 举报
回复
N张都在内存了,不过图片的内存都已经释放过了,点击这个按钮多次之后才增加1M,说明不是图像的内存没有释放,只是某些数组的问题啊
xiaoyilong19 2010-11-11
  • 打赏
  • 举报
回复
delete pszFile =>delete[] pszFile;不过有时候也没有根本影响,其他地方,你还是逐步注释这个函数的各个功能,然后运行后,确定到底那个地方出现问题,你里面有好几个自定义函数,内部操作看不到
浩南_哥 2010-11-11
  • 打赏
  • 举报
回复
你的n张图片打开都到内存了?
fyz2841585 2010-11-11
  • 打赏
  • 举报
回复
是否可以用stl的方式动态分配内存,这样会好一点?
孤客天涯 2010-11-11
  • 打赏
  • 举报
回复
先注释掉这句BAddImage(lpImageApi, _T(charpoint )),看还会不会出你说的内存增长情况,如果问题依旧,说明BAddImage(lpImageApi, _T(charpoint ))无关,否则你要查BAddImage(lpImageApi, _T(charpoint ))的原因
lazy_2010 2010-11-11
  • 打赏
  • 举报
回复
str[i].GetBuffer(str[i].GetLength()) 修改成 (LPCTSTR)str[i] 试一试
lyyscf 2010-11-11
  • 打赏
  • 举报
回复
调试一下
试几次后退出
打开输出 窗口
内存泄漏有显示,可直接定位
鹏鹏123 2010-11-11
  • 打赏
  • 举报
回复
CString str[888];

这个会有问题吗?
ls2141 2010-11-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fyz2841585 的回复:]

图片的内存都已经释放过了,点击这个按钮多次之后才增加1M,说明不是图像的内存没有释放,只是某些数组的问题啊
[/Quote]
那就不是你这按钮里面的函数问题了
你看看是不是 你得到这些 内存拷贝后在其它地方用了

16,472

社区成员

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

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

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