【发布时间】:2017-02-10 20:02:30
【问题描述】:
我搜索了这个问题但我找不到它,如果它是一个重复的问题而不给出否定点,请告诉我答案的链接。
在 Student 类中,我有很多成员,但其中四个是由运算符 new 在名为 set 的 public 方法中创建的
我这里只写其中一个:
class Student{
private:
float *tp;
....
}
这里是 set 方法,它是 public:
void Student::set(int field, int valeur){
...
tp = new float[valeur];
...
}
这里是 destructor,它是 public:
~Student(){
...
delete tp;
...
}
主要:
...
Student *students=new Student[n];
...
delete students;
在编译过程中没有任何错误,但是当我运行时却遇到了错误:
我还更改了 main 代码,只是为了检查:
Student s;
错误仍然存在。
【问题讨论】:
-
你没有贴出来的代码有错误
-
请提供一个显示此问题的最小但完整的代码示例
-
在您包含的内容中,您没有调用
set,因此tp可能有一个不确定的值,导致delete tp具有未定义的行为 -
删除数组时也应该使用
delete[] -
vu1p3n0x 谢谢。
标签: class destructor new-operator member delete-operator