Я вважаю це малою допомогою, як в моєму досвіді, коли люди отримують доступ до звільненого розподілу пам'яті, це майже завжди, тому що вони десь мають інший вказівник на це. І тоді він конфліктує з іншим персональним стандартом кодування, який є "Уникайте непотрібних захаращень", тому я не роблю цього, оскільки, думаю, це рідко допомагає і робить код трохи менш читабельним.
Однак - я не буду встановлювати змінну на null, якщо вказівник не повинен використовуватись знову, але часто дизайн вищого рівня дає мені підставу встановити його на нуль у будь-якому випадку. Наприклад, якщо вказівник є членом класу, і я видалив те, що це вказує, то "контракт", якщо вам сподобався клас, це те, що цей член вкаже на щось дійсне в будь-який час, тому його потрібно встановити на нуль з цієї причини. Невелика відмінність, але я вважаю важливою.
У c ++ важливо завжди думати, кому належать ці дані, коли ви виділяєте деяку пам’ять (якщо тільки ви не використовуєте розумні покажчики, але навіть тоді потрібна певна думка). І цей процес, як правило, призводить до того, що вказівники, як правило, є членами якогось класу, і, як правило, ви хочете, щоб клас знаходився у дійсному стані в усі часи, і найпростіший спосіб зробити це - встановити змінну члена на NULL, щоб вказати на це точки ні до чого.
Загальна схема полягає в тому, щоб встановити всі вказівники на член NULL у конструкторі та видалити виклик деструктора на будь-які вказівники до даних, за якими ваша конструкція говорить про те, що належить класу . Зрозуміло, що в цьому випадку вам потрібно встановити покажчик на NULL, коли ви видалите щось, що вказує на те, що раніше ви не володієте жодними даними.
Отже, підсумовуючи, так, я часто встановлюю вказівник на NULL після видалення чогось, але це як частина більшого дизайну і думок про те, кому належать дані, а не через сліпо слідування стандартному правилу кодування. Я б не робив цього у вашому прикладі, оскільки я думаю, що це не має ніякої користі, і це додає «захаращення», яке, на мій досвід, так само відповідає за помилки та поганий код, як і подібні речі.
ptr == NULL
перед цим щось робити. Якщо ви не скасуєте свої вільні покажчики, які ви отримаєте,ptr != NULL
але все ще непридатні вказівники.