在一个类的构造函数里面new了另一个类的对象

other123othe 2014-11-21 10:50:13


CWordView::CWordView()
{
m_pEditCode = new CEdit;
m_pEditWord = new CEdit;
m_pStaicCode = new CStatic;
m_pStaicWord = new CStatic;
m_pZoomView = new CZoomView;
m_pBtnReset = new CButton;
m_pBtnStore = new CButton;

CSize size1(0,0);
SetScrollSizes(MM_TEXT,size1);

}


CWordView::~CWordView()
{
if(m_pEditCode != NULL)
{
delete m_pEditCode;
m_pEditCode = NULL;
}
if(m_pEditWord != NULL)
{
delete m_pEditWord;
m_pEditWord = NULL;
}
if(m_pStaicCode != NULL)
{
delete m_pStaicCode ;
m_pStaicCode = NULL;
}
if(m_pStaicWord != NULL)
{
delete m_pStaicWord;
m_pStaicWord = NULL;
}
if(m_pBtnStore != NULL)
{
delete m_pBtnStore;
m_pBtnStore = NULL;
}
if(m_pBtnReset != NULL)
{
delete m_pBtnReset;
m_pBtnReset = NULL;
}
if(m_pZoomView != NULL)
{
delete m_pZoomView;
m_pZoomView = NULL;
}
}



这块不知道为啥有问题 就是在关闭单文档的时候 出现会挂在CWordView的析构函数里的 delete m_pZoomView这句 提示“Unhandled exception in at 0X00F6AB72 in test.exe : 0XC000005:Acess violation reading location 0xfeefef2”

如果删除了这句话就没有问题
还有 在这个m_pZoomView里面申请了一个图像的内存 但是在m_pZoomView的析构函数里面已经delete了

请问为啥这个样子
...全文
658 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
other123othe 2014-11-28
  • 打赏
  • 举报
回复
引用 7 楼 slash2007 的回复:
CRawImage类是你写的么,这个类的析构拿上来看看。或者你自己一层一层的调试下去看看。
不是我写的 是个开源的静态库
Sandrer 2014-11-25
  • 打赏
  • 举报
回复
看一下你的程序是不是在某个地方把 m_pZoomView 删除了而不知道 还有一个问题就是,mfc debug 模式下的内存,是按“块”来管理的 一个块中有可能不止一段内存 那么会不会是你在删除另外一段内存的时候,没有把内存的长度控制好,把存放 m_pZoomView 的那块内存也一并删除了
Sandrer 2014-11-25
  • 打赏
  • 举报
回复
Unhandled exception in at 0X00F6AB72 in test.exe : 0XC000005:Acess violation reading location 0xfeefef2 看错误提示,大致意思是你访问了一块不属于你的内存 这块内存在之前已经被释放掉了,但你没有把 m_pZoomView 置为 NULL 如果一段内存中的值为 0xfeeefeee,那就是已经被释放掉的内存 你再访问它就会出错
聚义舔刀 2014-11-24
  • 打赏
  • 举报
回复
CRawImage类是你写的么,这个类的析构拿上来看看。或者你自己一层一层的调试下去看看。
真相重于对错 2014-11-24
  • 打赏
  • 举报
回复
拿汽车打比方的话,C++类似于手动挡虽然省油但对你的操作有一定要求,.net java 类似于自动挡虽费油但易于操作,所以既然用c++你就要对它所涉及的资源要有全盘的考虑,你不能用操作自动挡汽车的方式操作手动挡汽车
SiGoYi 2014-11-24
  • 打赏
  • 举报
回复
把CZoomView类中的m_pWordImg初始化为NULL式式。
jianghandaxue 2014-11-24
  • 打赏
  • 举报
回复
在你的CZoomView这个类中,所有new过的地方的类释放时打断点调试下,CRawImage类里面应该还有new的地方,看是哪个地方出现指针异常的地方
other123othe 2014-11-21
  • 打赏
  • 举报
回复
引用 2 楼 he_shilong 的回复:
CZoomView的构造析构咋写的啊


CZoomView::CZoomView()
{
	m_fScale = 1.0;
	m_pWordImg = new CRawImage;

}

CZoomView::~CZoomView()
{
	if(m_pWordImg != NULL)
	{
		delete m_pWordImg;
		m_pWordImg = NULL;
	}
}


he_shilong 2014-11-21
  • 打赏
  • 举报
回复
CZoomView的构造析构咋写的啊
other123othe 2014-11-21
  • 打赏
  • 举报
回复
谢谢大侠了啊

16,471

社区成员

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

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

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