Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 15 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 10.06.2010, 23:08   #1
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
Репутация: 15
По умолчанию Удаление временных объектов

Код:
	char * s;
	{
		s = "mid";
	}
	int * arr = new int[10];
	arr[0] = 2;
	cout << s;
В результате на консоль выводится "mid", но разве "mid" - не временный объект, который должен быть уничтожен, после первой закрывающейся скобки?
Kn793 вне форума   Ответить с цитированием
Старый 10.06.2010, 23:14   #2
Ozerich
Студент 1 курса
Участник клубаФорумчанин
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Адрес: Минск(Беларусь)
Сообщений: 959
Репутация: 212

icq: 465033557
skype: Ozerich_
По умолчанию

Объект уничтожается когда выходит из области видимости в которой объявлен. Сделай так
Код:

	{
	char * s;
		s = "mid";
	}
	int * arr = new int[10];
	arr[0] = 2;
	cout << s;
и тогда переменной s и не будет существовать когда ты на консоль выводишь
__________________
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума   Ответить с цитированием
Старый 10.06.2010, 23:19   #3
Пепел Феникса
Модератор
Заслуженный модератор
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Адрес: Москва
Сообщений: 20,995
Репутация: 3436

icq: 446843180
skype: phoenix_proger
По умолчанию

"mid" это константа, она не испарится.
потому и указатель который указывал на нее, остается верным.
__________________
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума   Ответить с цитированием
Старый 10.06.2010, 23:20   #4
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
Репутация: 15
По умолчанию

такой код в принципе не скомпилится, ибо s объявлено в той области видимости, где cout его не достанет.

>Объект уничтожается когда выходит из области видимости в которой объявлен.
Вроде как уничтожение указателя не должно повести за собой уничтожение того, на что он указывает.
Kn793 вне форума   Ответить с цитированием
Старый 10.06.2010, 23:22   #5
Kn793
Форумчанин
 
Регистрация: 20.06.2008
Сообщений: 125
Репутация: 15
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
"mid" это константа, она не испарится.
потому и указатель который указывал на нее, остается верным.
Аа, ясно.
Спасибо.
Kn793 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление динамических объектов / полная очистка формы 095 Общие вопросы Delphi 3 23.04.2012 16:09
Удаление объектов PARTOS Microsoft Office Excel 2 11.05.2010 10:32
Проигрывание Flash-роликов без использования временных файлов Zen2007 Общие вопросы .NET 1 26.07.2009 21:00
Вывод временных меток и цифр из файла pautina Общие вопросы Delphi 4 25.01.2009 13:45
Много объектов. Манжосов Денис :) Общие вопросы Delphi 5 04.09.2008 22:34


01:07.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru