【发布时间】:2011-12-06 23:02:01
【问题描述】:
我在 web site 上找到了此代码
#include <iostream>
using namespace std;
struct Base
{
Base() { cout << "Base" << " "; }
virtual ~Base() { cout << "~Base" << endl; }
int i;
};
struct Der : public Base
{
Der() { cout << "Der" << endl; }
virtual ~Der() { cout << "~Der" << " "; }
int it[10]; // sizeof(Base) != sizeof(Der)
};
int main()
{
Base *bp = new Der;
Base *bq = new Der[5];
delete bp;
delete [] bq; // this causes runtime error
}
为什么是crash?
【问题讨论】:
-
只需使用 std::vector
而不是数组 ... -
或来自 C++0x 的 std::array
...
标签: c++ polymorphism segmentation-fault new-operator virtual-destructor