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

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

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

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

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

Код:
	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
По умолчанию

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

	{
	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
Сообщений: 21,003
По умолчанию

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

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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление динамических объектов / полная очистка формы 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