Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Адрес указателя после delete

5.1K
03 августа 2009 года
Karrde
88 / / 15.10.2007
Не совсем могу понять. Допустим, у меня есть массив, который нужно удалить функцией delete[] massiv. Массив удаляется, но адрес указателя не обнуляется, а остается таким же. В итоге, когда мне в какой-то момент необходимо проверить на существование данный массив:
if(NULL != massiv) программа считает, что массив существует. Как это обойти?
1.9K
04 августа 2009 года
InterWen
331 / / 16.09.2006
Цитата: Karrde
if(NULL != massiv) программа считает, что массив существует. Как это обойти?



Принудительным обнулением указателя после удаления блока памяти, не иначе.

[COLOR="Gray"]Что там еще... Умные указатели, переопределение самого оператора, хотя это не факт, т.к. вряд ли удастся втюхать в ф-ю глобального оператора delete[] указатель на блок памяти по ссылке, или как там у вас в С++ :)[/COLOR]

1.9K
04 августа 2009 года
InterWen
331 / / 16.09.2006
Аналогичная проблема - http://www.sql.ru/forum/actualthread.aspx?tid=285187
Только руцями :(
288
04 августа 2009 года
nikitozz
1.2K / / 09.03.2007
В общем случае, не существует такой возможности проверить, указывает ли указатель на выделенную область памяти или нет.
5.1K
04 августа 2009 года
Karrde
88 / / 15.10.2007
Хмм. а если проверить, например, существование 1-го элемента массива. это будет корректно?
288
04 августа 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Karrde
Хмм. а если проверить, например, существование 1-го элемента массива. это будет корректно?



Нет. Даже если вы уже освободили память в лучшем случае (и скорее) ничего не произойдет и проверка "покажет" что элемент есть, в худшем (очень наврядли) получить какой нибудь exception.

3.7K
04 августа 2009 года
0nni
326 / / 24.06.2008
Еще в догонку, для проверки "читабельности" указателя есть IsBadWritePtr() IsBadReadPtr() и еще несколько isBadXXX();
260
04 августа 2009 года
Ramon
1.1K / / 16.08.2003
Инвариант, инвариант...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог