@sddvxd

В чем различие между объявлением с new и без него?

Кроме того, что конструкция с new позволяет потом освободить память вручную
  • Вопрос задан
  • 140 просмотров
Решения вопроса 1
@Mercury13
Программист на «си с крестами» и не только
ПОЛОЖЕНИЕ В ПАМЯТИ
Без new: static/глобальная — в сегменте данных, локальная — на стеке. В сегменте данных память отводится при компиляции линковке, создать стековый фрейм — две команды процессора.
С new: в куче. Управление кучей — довольно сложная задача, и если этих new много, программа может начать тормозить.

ВРЕМЯ ЖИЗНИ
Без new: объект живёт, пока выполнение находится в данном блоке. При выходе из блока автоматически срабатывает деструктор.
С new: уничтожаем, когда хотим.

ИМЕНОВАНИЕ
Без new: объект привязан к своему имени.
С new: объект безымянный (имя только у указателя). Потому возможны структуры данных переменного размера: динамические массивы, связанные списки, деревья и прочее.

РАЗМЕР
Без new: задан при компиляции. То есть массив на 10 позиций, и точка, больше — только перекомпиляцией.
С new: произвольный.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@res2001
Developer, ex-admin
new выделяет память в куче, а определение без new - на стеке, со всеми вытекающими преимуществами и недостатками. Нужно понимать когда определять объект в куче, а когда на стеке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
Интехнова Белгород
от 30 000 до 60 000 руб.
ICONIC Москва
от 200 000 руб.
22 июля 2018, в 20:41
10000 руб./за проект
22 июля 2018, в 20:13
2000 руб./за проект