C ++ динамическое выделение памяти локальной переменной

У меня был урок информатики в школе, и наш учитель говорил о динамическом распределении памяти и почему

cin>>size;
int array[size]; // According to him this should result in a compiler error

этот не должен работать и вместо этого мы должны были использовать:

int *p, size;
cin>>size;
p = new int[size]
...
delete[] p;

Мой вопрос: почему первый пример работает, если вы не можете объявить динамически подобные массивы?

ОБНОВИТЬ: Все тесты сделаны в Компилятор GNU GCC и код выше находится внутри главный функция

3

Решение

Вы используете нестандартный компилятор, который поддерживает массивы переменной длины. Ваш профессор прав, int array[size] не должен компилироваться.

Ваш профессор также неправильно говорю вам использовать p = new int[size], Что он должен сделать, это сказать вам, чтобы использовать std::vector<int> p(size), (хорошо, в образовательных целях это нормально) 🙂

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]