Не пользуемся компилятором!
В какой строке (или строках) кода ниже выполнение программы не определено?
1 struct Foo
2 {
3 virtual ~Foo() {}
4 };
5
6 struct Bar : public Foo
7 {
8 };
9
10 int main(int argc, char** argv)
11 {
12 Foo* f = new Bar;
13 delete f;
14 f = 0;
15 delete f;
16
17 Foo* fa = new Bar[10];
18 delete fa;
19 fa = 0;
20 delete fa;
21
22 return 0;
23 }
В 18-ой.
Во-первых, скорее всего ты хотел написать delete [] fa;(ибо в таком виде UB даже при совподении статического и динамического типа).
Во-вторых, _http://www.kuzbass.ru:8086/docs/isocpp/expr.html#expr.delete - см. 3-й параграф: In the second alternative (delete array) if the dynamic type of the object to be deleted differs from its static type, the behavior is undefined.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)