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

关于“删除数据”的函数

最左边那个 发布于 2009-08-30 21:06, 350 次点击
大家好。请问下,下面是我代码里的一部分,是通过学号来删除那一学号所属的结构,在IF的{}里我本来想写 delete []student的,可是发现不行,我看不出为什么不行,请教一下大家,为什么?那应该怎么样才行?
   double StuNo;
    cout<<"学号: \n";
    cin>>StuNo;
    f.seekp(0,ios::end);
    long posEnd=f.tellp();
    f.seekp(-long(sizeof(studentData)),ios::cur);
    studentData student;
    do
    {
        f.read((char *) & student,sizeof(studentData));
    }while(student.StuNo!=StuNo  &&  f.tellp()!=posEnd);
    if(student.StuNo==StuNo)
    {

    }
1 回复
#2
debroa7232009-08-31 00:14
delete和new要成对出现,所提供的代码看不出有什么地方new的,而且也看不出是new的数组,所以使用delete []是一个疑问。
还有,对这个结构体或是类是否重载了delete []操作符,如果没有,对它的实例做delete []操作是不对的,delete一个临时变量是不合法的语法,它只是个临时变量,不是指针,也没有new一块内存给它,为什么要去delete它。如果它的成员有指针,并在某种机制下new出了空间,是应该delete,但先得把delete给重载。

[ 本帖最后由 debroa723 于 2009-8-31 00:19 编辑 ]
1