Почему компилятор требует 'delete []p' против 'delete p[]'?

В C++, если вы хотите динамически выделять массив, вы можете сделать что-то вроде этого:

int *p;
p = new int[i];  // i is some number

Однако, чтобы удалить массив, вы делаете...

delete[] p;

Почему не удалить p[]? Разве это не было бы более симметрично с тем, как он был первоначально создан? В чем причина (если таковая имеется)Почему язык был разработан таким образом?

16
задан Brian Tompsett - 汤莱恩 21 September 2015 в 09:05
поделиться