Детали языка, даже самые мелкие, очень важны.
Вот простой пример, о котором я и сам в Экспресс-курсе писал:
> -- Цитата:
> double d = 1,5;
Уж сколько лет после фортрана прошло, а такая элементарная описка в С++ НЕ ДИАГНОСТИРУЕТСЯ! Это, с точки зрения языка - НЕ ОШИБКА.
Подобных вещей в С++ - море. Даже в стандарте есть специальные слова: undefined behaviour - неопределенное поведение.
Вот еще пример:
## Код:
```
#define T 2

class A {
  public:
    virtual ~A() { 
      p = 0;
    }
    int p;
};

class B: public A {
  int a;
};

int main() {
  A* a = new B[T];
  delete[] a;
  return 0;
}
```

Падает на delete[]a;
И вообще:
http://habrahabr.ru/company/intel/blog/108231/