Предположим есть указатель на другой указатель. Я меняю значение этого указателя (например, на nullptr). Вопрос: очищается ли память, выделенная под другой указатель?
Обнуление (как и любое другое изменение) значений обычных «сырых» указателей в c++ не приводит к какому-либо освобождению памяти, на которую они указывают. Но совершенно свободно могут привести к утечке памяти. Обычный указатель легковесен, он не обладает какими-то скрытыми возможностями для управления адресованной им памятью. Представляйте указатель как обычный простой адрес памяти и всё будет ясно. Уничтожение письма с адресом не приводит к уничтожению дома, расположенного по этому адресу. Таким образом говорить о том, чтобы изменение значения указателя влияло на память — нельзя, а уж при добавлении еще одного косвенного указателя тем более. Если нужно освободить динамически выделенную через new/new[] память по указателю, следует использовать соответствующий оператор: delete для скалярных величин или delete[] для массивов. Более того, даже после освобождения памяти сам указатель никак не изменяется и не обнуляется автоматически. Если нужно его пометить свободным после удаления, требуется вручную присвоить ему новое значение, например, тот же самый nullptr.
Если нужно, чтобы изменение значения указателя влияло на память, адресуемую этим указателем, он должен быть нечто большим, чем просто адресом. В частности для этого придумали «умные» указатели — классы-обёртки, в функциях (и конструкторах/деструкторах в особенности) которых реализовано необходимое дополнительное поведение.
В стандартном c++ для этих целей существуют такие классы как std::unique_ptr и std::shared_ptr.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости