注册 登录
编程论坛 C++教室

C++用到CObArray类时,出现空指针的问题,帮忙啊!!

hong4781798 发布于 2010-10-19 00:37, 1001 次点击
编写驾驶证管理的时候变量为CObArray类的,当用完后不知道如何释放空间,撤销操作时会出现错误,不明白,望大虾们帮忙啊!!
只有本站会员才能查看附件,请 登录
7 回复
#2
hong47817982010-10-19 00:39
回复 楼主 hong4781798
程序的代码有这两个文件因为太大了,所以只好单个的贴上来了,望大侠们多多帮忙啊!初学C++,谢谢!!
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
#3
hahayezhe2010-10-19 08:59
查找MSDN 看相关类的使用说明 和包含的成员函数
#4
lintaoyn2010-10-19 09:29
程序代码:
int manager::cancel (CString id)
{
//    licence *lic=new licence();
    for(int i=0;i<licences.GetSize();i++)
    {
        licence *lic = (licence *)licences.GetAt(i);
        if(! (lic->getid()))
        {     
//            delete lic;
            licences.RemoveAt (i);
            break;
        }
    }
    return 0;
}
licences.GetAt(i)返回的是CObject*。
还有for里面的,lic是不是还指向用new申请的为licence分配的内存。
我说不清,几个类看的也不是很明白,但是这样改了运行时,不会有报错了。
总之delete只能释放由new申请的内存,可以用基类的指针去释放实际为其派生类的内存(基类的析构函数得是虚的),反过来是不行的。
#5
missiyou2010-10-19 10:01
licence::~licence()
    {
      delete[] name;
      
    }

char *name ;

初始化:
     name = new char[length];
     strcpy(name, desc);
上面对话框的意思是释放堆内存失败
#6
hong47817982010-10-19 12:34
回复 3楼 hahayezhe
好的,谢谢了
#7
hong47817982010-10-19 12:37
回复 4楼 lintaoyn
好的,十分感谢啊
#8
hong47817982010-10-19 12:39
回复 5楼 missiyou
谢谢
1