Для следующего кода:
foo(int n){
int array[n];
}
Я понимаю, что это недопустимый синтаксис и что он недопустим, потому что для стандарта С++ требуется, чтобы размер массива устанавливался во время компиляции (хотя некоторые компиляторы поддерживают следующий синтаксис).
Однако я также понимаю, что допустимый синтаксис следующий:
bar(int n){
int *array = new int[n];
}
Я не понимаю, почему это разрешено, разве это не то же самое, что создавать массив, где размер определяется во время выполнения? Правильно ли это делать или я должен использовать вектор, если мне нужно это сделать?