Форум программистов, компьютерный форум, киберфорум
Наши страницы

Как проверить, быль ли удалён указатель или нет? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Сортировка односвязного списка http://www.cyberforum.ru/cpp-beginners/thread894258.html
ребят, нужна помощь, учусь на втором курсе для зачета нужно написать сортировку односвязного списка. а мы такого рода программы не изучали... список должен быть в отдельном файле список Head:2 № ...
C++ true and false Уважаемые, программисты! Помогите, пожалуйста, с программой. Написать программу, которая печатает True или False в зависимости от того, выполняются или нет заданные условия: - квадрат заданного... http://www.cyberforum.ru/cpp-beginners/thread894253.html
найти простые числа и поменять столбики местами C++
Характеристикой столбца целочисленной матрицы назовем сумму его элементов,являющихся простыми числами. Упорядочить столбцы матрицы по убыванию характеристик. Помогите пожалуйста!
CUDA: Как учитывать ограничение в памяти видухи? Дайте совет по идеологии вычислений! C++
Вопрос 1: Опишу простую задачу и способ ее решения. Я мануал конечно читал, но мне нужен совет по реализации вычислений на CUDA. Допустим, есть N штук ядер на видухе, есть матрица A, где...
C++ Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки http://www.cyberforum.ru/cpp-beginners/thread894233.html
Текстовый файл содержит строки – предложения разной длины. Записать их в выходной файл в порядке возрастания длины строки.
C++ Из заданного на плоскости множества точек выбрать три различные точки Из заданного на плоскости множества точек выбрать три различные точки так, чтобы разность между площадью круга, ограниченного окружностью, проходящей через эти три точки, и площадью треугольника с... подробнее

Показать сообщение отдельно
Гром
210 / 129 / 11
Регистрация: 20.03.2009
Сообщений: 1,103
Записей в блоге: 16
Завершенные тесты: 1
07.06.2013, 12:00
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
template <class T>
void Free(T &x)
{
x.~T();
delete x;
x = NULL;
}

Не по теме:

Люди, что ж вы делаете-то?


delete всегда автоматически вызывает деструктор. Самостоятельно его не надо вызывать никогда!

Цитата Сообщение от FarStar Посмотреть сообщение
тоесть когда пишу после delete x; x = NULL, это корректно ? и удалённому указателю присвоится ноль?
Сначала очистится память, на которую указывал указатель (с самим указателем ничего не происходит, они в принципе мало информации содержат - обычно только адрес в памяти), а потом указателю присваивается нулевое значение.
Кстати, я лично предпочитаю не пользоваться макросом NULL, а писать непосредственно 0. В 11 стандарте есть еще более православная вещь - null_ptr.

В общем, вам нужно писать просто
C++
1
2
delete p;
p = 0;   //Или NULL если желаете
и потом проверять
C++
1
2
3
4
if (p)
 //значит, еще не удален
if (p == 0)
 //увы
А вообще, возможно вам имеет смысл действительно работать с умными указателями.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.