Динамическое выделение памяти на C++, конечно, может быть выполнено с использованием new
или delete
. Если курсор, динамически распределенный с использованием new
, больше не нужен в ходе программы на C++, delete
может использоваться для динамического освобождения памяти компьютера. Я думаю, если моя память послужит мне правильно, то Stroustrep в одной из своих книг на C++ упоминает, что malloc
и alloc
в C предоставляют компилятору, а не программисту возможность «освобождать» или «создавать» память в отличие от объекта -ориентированный «новый» и «удалить». Если я не удалю указатель, тогда я столкнусь с довольно коварной утечкой памяти, что не очень хорошо.Утечки памяти, перегрузка оператора присваивания, новое, удаление и C++
Тем не менее, просто удаление указателя - как примечание Каррано, Хельмана и Вероффа (CHV) на страницах 151-153 во втором издании «Стены и зеркала» - не избавляется от указателя. Скорее удалите пустоты, содержимое указателя все же оставляет указатель где-то в памяти компьютера.
В любом случае CHV тогда скажет, что указатель должен быть установлен на NULL
после использования delete
, чтобы избавиться от этой «удаленной» конструкции.
Является ли оператор назначения перегружен в этом случае, чтобы принять NULL
в качестве логического значения? Другими словами, компилятор говорит компьютеру, что это ложь, что указатель должен существовать в памяти, что означает, что я говорю компилятору, чтобы физически остановить кучу электронов, занимающих двухбитное пространство от моего компьютера ? Я что-то упустил?
Итак ... много ... путаница ... –
Это как одна из тех научных трудов тролля. –
У меня создалось впечатление, что «NULL == 0» будет трактоваться как ИСТИНА, что означает, что NULL является синонимом FALSE, что подразумевает, что указатель превращается в конструкцию типа «Boolean», как только она заканчивается таким образом. Я думал, что 0 «закрывает» электронные ворота, а «1» означает, что ворота открыты. Я ошибаюсь? – fishermanhat