Другие языки программирования и технологии

С++ Пожалуйста, объясните чайнику о операторах new и delete

Динамическая память - я понимаю, это память, которая освобождается, после ее использования (как CD RW диски, или флэшки, по пользовался - и очистил) , после оператора delete nullptr
Int *var new int;
Это означает, что выделяется динамическая память с размером 4 байта для var. а без new, написать :
int var; //переменная
int *ptr; //указатель
ptr = &var; // указатель получает адрес переменной
это не одно и тоже?

Пожалуйста, если знаете какие нибудь книги, в которых хорошо об этом (new/delete) написано, напишите авторов и название.
int *var=new int;
означает, что выделяется память для двух переменных: для безымянной переменной типа int и для указателя с именем var, в который занесен адрес этй переменной.
Плюс использования динамической памяти - ее можно забирать под переменные и освобождать во время выполнения программы, кроме того, она берется из другого, менее ограниченного в размерах, резерва выделяемой памяти. Минус в том, что выделение и освобождение памяти требует дополнительного времени, да и операции с такими переменными могут быть несколько медленнее.
PA
Pavel Andropov
83 952
Лучший ответ
Вы просто упустили понятие стековой памяти. последние 2 объявления в Вашем примере переменной и указателя используют стековую память. Стековая память выделяется перед очередным блоком и освобождается при выходе из блока. Поэтому специально её очищать как после выделения с помощью оператора new не надо.
Петр Саблуков
Петр Саблуков
76 473
Конечно, это не одно и тоже. Вам нужно начинать с устройства размещения программ в памяти: адреса, указатели, стек, динамическая память (куча) и т. п.
Вот, всем новичкам рекомендуется:
Р. Лафоре - преподаватель, каких поискать еще надо )).800 страниц с упражнениями.
c.411 Глава 10.Указатели. Потому что раньше не поймете )). с. 438 new и delete.
В общем, лучше его никто не обьяснит. Формат ответов - несколько другой)).
нет не одно и тоже. В первом случае память выделена динамически, вовремя выполнения программы, и будет освобождена только когда программа завершится, либо когда пользователь ее освободит через delete. Во втором случае память выделяется не динамически при старте программы. А мы только получаем указатель для более удобного использования. Освобождением памяти в данном случае озабочен уборщик муссора.