Krab Bark
Искусственный Интеллект
(296495)
5 лет назад
Из кучи можно взять гораздо больше памяти, чем из стека, поэтому массив может быть большего размера - раз.
Для обычного массива работают sizeof и цикл по диапазону, для динамического нет - два.
Размер динамического массива может быть задан в ходе работы программы, обычного нет - три.
Для многомерных обычных массивов их данные в памяти лежат последовательно, для динамических это обычно не соблюдается - четыре.
H-p A
Просветленный
(47009)
5 лет назад
Меняется то, что несмотря на преимущества перед обычным (которые с удовольствием опишут программисты старой школы) динамический массив использовать нежелательно. У динамического большой недостаток - надо очищать память. И еще мелких несколько наберётся.
Поэтому в современных программах вместо него стараются использовать std::vector или другие контейнеры STL и Boost. А про него даже объяснять лень.
ivtst1
Просветленный
(30511)
5 лет назад
Обычный выделяется на стеке, а стек ограничен по размеру (Для ПК 1Мб по умолчанию). Динамический массив выделяется в виртуальной памяти и ограничен только разрядностью машины - 4Гб для 32х-разрядной, 2^64 для 64. Кроме того, динамическую память можно освободить в любой момент.
В конкретном случае (int a[8] и int *a = new int [8]), на первое выделение потребуется 8 байт памяти, на второе на несколько байт больше, т. к. по адресам перед массивом будет служебная информация.
Кроме того что один использует спек, а другой кучу, что меняется?
Киньте ссылку на статью или видео, а если не лень объясните пожалуйста сами.
Заранее огромное спасибо