Недавно, очень уставший, я написал следующий код:
GLfloat* array = new GLfloat(x * y * z);
Что, конечно, должно было быть:
GLfloat* array = new GLfloat[x * y * z];
(обратите внимание на квадратные скобки, а не на круглые скобки.)
Насколько я знаю, первая форма недействительна, но g ++ ее скомпилировал. Конечно, он выплюнул совершенно непонятный сегмент, но он скомпилирован.
Почему?