首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

在类中用new分配堆空间时,遇到的有关问题

2012-02-21 
在类中用new分配堆空间时,遇到的问题用new分配;1,CMyView:publicCView{public:CStringstr}CMyView::CMyVi

在类中用new分配堆空间时,遇到的问题
用new分配;
1,
CMyView:public   CView
{
        public:
              CString   str;
}
CMyView::CMyView()
{
str=new   CString;
}
CMyView::~CMyview()
{
                  delete   CString;
}
结果编译通不过。如果想为一个引用类对象分配堆上的空间,该怎么做啊?不一定是CString类。
2,
CMyView:public   CView
{
              char   *str;
}
CMyView::CMyView()
{
              str=new   char[40];
}
CMyView::~CMyView()
{
              delete   []str;

}
这次编译通过了,但是运行后,关闭窗口的时候,会报错。
求教,谢谢。

[解决办法]
1-a.
CMyView:public CView
{
public:
CString str; // 这里定义了一个对象,而不是指针呀。是否应该改成 CString * str; ?
}

1-b.
CMyView::~CMyview()
{
delete CString; // 怎么能 delete 一个类类型呢? 如果1. 改好了,是否这里改成
// delete str; 呢?
}

3.
这个应该是对的。然而,有可能你贴的只是删减版的代码,中间的其它操作没看到前不好说呀。
[解决办法]
CMyView::~CMyView()
{
delete []str;

}
===================
在析构之前有没有执行 "delete []str; "?如果有就最后给它赋个NULL值,然后在析构的时候改为:
CMyView::~CMyView()
{
if (str != NULL)
delete []str;

}

热点排行