【发布时间】:2018-06-16 16:12:56
【问题描述】:
我这里有一段代码,我不明白为什么它会导致第 22 行出现分段错误(delete[] 语句)。你能给我解释一下吗?
#include<iostream>
#include<memory>
class A {
size_t a[1000];
public:
virtual ~A() { }
};
class B : public A {
public:
float b;
virtual ~B() { }
};
int main(int argc, char** argv){
A *b;
b = new B[10];
delete[] b;
return 0;
}
奇怪的是,如果 B 类没有任何成员变量(即我注释掉“float b;”行),那么代码就可以正常运行。
我的错误是什么?
【问题讨论】:
标签: c++ segmentation-fault delete-operator