Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> delete без new, Возможно ли такое 
:(
    Опции темы
CPlusPlusFAN
Дата 9.2.2006, 03:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 315
Регистрация: 1.11.2005
Где: Воронеж

Репутация: нет
Всего: нет



Здравствуйте!

Понимаю, что мой вопрос может показаться Вам наивным, но всё-таки я рискну:

Пусть имеется указатель

Код


int *i;
/*Какие-то действия над указателем*/



Вопрос: насколько корректно вот это?

Код


delete i;



Причём я не выделял память с помощью new.
PM MAIL ICQ Jabber   Вверх
AlexPro
Дата 9.2.2006, 05:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 4



Хороший способ поиметь себе проблемы.
PM MAIL   Вверх
cardinal
Дата 9.2.2006, 05:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 2
Всего: 99



Цитата(CPlusPlusFAN @ 9.2.2006, 01:34 Найти цитируемый пост)

Вопрос: насколько корректно вот это?

Это некорректно, т.к. new и delete это как скобки - сколько открыл, столько и закрыть надо! Остальное как AlexPro уже сказал приводит только к глюкам...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
azesmcar
Дата 9.2.2006, 09:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Во первыx int *i запись неправильна изначально...надо инициализировать указатель...все зависит от того что значит

Цитата

/*Какие-то действия над указателем*/

Цитата

int *i;


пример
Код

int *p = new int;
int *i = p;
//...
delete i;

или
Код

int *i = 0;

delete i;


вполне нормальная запись (по стандарту удалять нулевой указатель нормально)...правда бессмысленная smile
записью int * ты просто создал указатель на тип int, который на самом деле ни на что не указывает...без инициализации указатель не обьявляют (даже warning получишь по этому поводу от компилятора)...а в остальном если ничего не делал new, то что же удалять?
PM   Вверх
AlexPro
Дата 9.2.2006, 11:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 4



Цитата(azesmcar @ 9.2.2006, 09:59 Найти цитируемый пост)

Во первыx int *i запись неправильна изначально...надо инициализировать указатель

Необязательно это делать сразу, хотя и желательно. Главное не забыть его инициализировать его перед использованием.
PM MAIL   Вверх
azesmcar
Дата 9.2.2006, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 81
Всего: 211



Цитата

Необязательно это делать сразу, хотя и желательно. Главное не забыть его инициализировать его перед использованием.


Я сказал warning а не error smile
Цитата

без инициализации указатель не обьявляют


В смысле нежелательно smile
PM   Вверх
DeadSoul
Дата 9.2.2006, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1217
Регистрация: 25.9.2005
Где: Москва

Репутация: 2
Всего: 11



CPlusPlusFAN,
1. Неициализированный указать - источник проблем на твою пятую точку
2. Такой код корректер:
Код

int *p=0;

delete p;

Такой нет
Код

int *p=(ште*)13612;

delete p;



--------------------
 Если Вы получили ответ на Ваш вопрос, то нажмите на "Вопрос решен". 

Бьем спамеров их же оружием. Пусть весь спам сыпется им
[email protected] 
PM   Вверх
AlexPro
Дата 10.2.2006, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 157
Регистрация: 9.11.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 4



Цитата(DeadSoul @ 9.2.2006, 22:39 Найти цитируемый пост)

int *p=(ште*)13612;

Такой код действительно некорректен smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.