在线急等 关于CPrintDialog 内存泄漏问题

清新悦悠然 2011-04-07 04:06:08
ASSERT(pWnd);

CPrintDialog pd(
FALSE,PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE |D_NOSELECTION,pWnd);

pd.m_pd.Flags &= ~PD_RETURNDC; // Reset flag set by constructor.
if(m_hDevMode)
pd.m_pd.hDevMode = CopyHandle(m_hDevMode); // 每当程序运行到这个地方都会报内存错误
if(m_hDevNames)
pd.m_pd.hDevNames = CopyHandle(m_hDevNames);
if (pd.DoModal() == IDOK) {
if(m_hDevMode)
GlobalFree(m_hDevMode); // Free old copies.
if(m_hDevNames)
GlobalFree(m_hDevNames); // Free old copies.
if(pd.m_pd.hDevMode)
m_hDevMode = CopyHandle(pd.m_pd.hDevMode); // Save new copies.
if(pd.m_pd.hDevNames)
m_hDevNames = CopyHandle(pd.m_pd.hDevNames); // Save new copies.
}
GlobalFree(pd.m_pd.hDevMode); // Because DoModal was called,
GlobalFree(pd.m_pd.hDevNames); // we need to free these.
return DevmodePrinterName();
}


程序每当运行到 m_hDevMode 与m_hDevNames 相关的语句是都会报内存错误,这两个变量的初始化 在构造函数中 初始化为NULL,请教这是什么原因啊
...全文
86 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2011-05-06
  • 打赏
  • 举报
回复
您好
我是本版版主
此帖已多日无人关注
请您及时结帖
如您认为问题没有解决可按无满意结帖处理
另外本版设置了疑难问题汇总帖
并已在版面置顶
相关规定其帖子中有说明
您可以根据规定提交您帖子的链接
如您目前不想结帖只需回帖说明
我们会删除此结帖通知

见此回复三日内无回应
我们将强制结帖
相关规定详见界面界面版关于版主结帖工作的具体办法
清新悦悠然 2011-04-07
  • 打赏
  • 举报
回复
谢谢您的回答
很抱歉,可能我标的地方有点异议,我在if(m_hDevMode)
pd.m_pd.hDevMode = CopyHandle(m_hDevMode); // 每当程序运行到这个地方都会报内存错误
这句我测试是这么测试的
AfxMessageBox(“0”);
if(m_hDevMode)
{
AfxMessageBox(“1”);

pd.m_pd.hDevMode = CopyHandle(m_hDevMode);
}
当我运行以后 ,能弹出消息对话框 0,点击确定以后就出一个 内存错误。
这里跟pd.m_pd.hDevMode 是否分配内存有关系么?
HowToP2p 2011-04-07
  • 打赏
  • 举报
回复
pd.m_pd.hDevMode 这个hDevMode有值吗?是不是要先分配个内存?

15,976

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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