Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: Программирование на C / C++


Информационный Канал Subscribe.Ru

RusFAQ.ru: Программирование на C / C++

Выпуск № 542
от 28.06.2004, 00:40

Администратор:
Имя: Nick.Box
URL: Информационный ресурс
ICQ: 365124
[censored], [censored]
О рассылке:
Задано вопросов: 1730
Отправлено ответов: 3425
Активность: 197.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

bocha
Статус: Опытный
Общий рейтинг: 146.66
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 109.41
[Подробней >>]
chebv
Статус: Опытный
Общий рейтинг: 108.77
URL: Chebv
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 1727. Доброго времени суток! Подскажите пожалуйста такую деталь: char*s=”1234”; s=”ABCDEF”; Здесь будет ут... (ответов: 3)

Вопросов: 1, ответов: 3


 Вопрос № 1727

Доброго времени суток!
Подскажите пожалуйста такую деталь:
char*s=”1234”;
s=”ABCDEF”;
Здесь будет утечка памяти, или все-таки перед повторным присвоением указателю s память освободится, на которую этот указатель показывал ранее?



Вопрос отправлен: 24.06.2004, 19:16
Отправитель: Alexander

[Следующий вопрос >>] [Список вопросов]

Отвечает bocha

Здравствуйте, Alexander!
Обе строки - статически размещаемые данные, т.ч. ни какой утечки не будет, просто к первой строке ты больше не сможешь обратится. Утечка будет, если ты выделишь под первую строку память из кучи, а затем не уничтожая ее присвоишь указателью другое значение.

Ответ отправлен: 25.06.2004, 05:12
Отправитель: bocha


Отвечает vitya

Доброе время суток, Alexander!
Это не правильный код. Хороший компилятор должен давать предупреждение. В стандарте ц++ char * s = "text"; все еще разрешен, но скорее в следующем они все уже будут подразумеваться, как const char * - короче - char * = "text" - это констатный массив.

Ответ отправлен: 25.06.2004, 09:11
Отправитель: vitya


Отвечает chebv

Приветствую Вас, Alexander!
Здесь будет, во-первых, потеря памяти под "1234", во-вторых, указатель s будет указывать в неопределенное место в памяти. Вернее, в тот адрес, который получится преобразованием строки "ABCDEF" :)

Ответ отправлен: 26.06.2004, 09:04
Отправитель: chebv



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (23)
C / C++ (14)
Perl (3)
Builder / Delphi (18)
Pascal (27)
Basic / VBA (7)
Java / JavaScript (4)
PHP (12)
Криптография (8)
WinAPI (12)
Радиоэлектроника (12)
Пользователю
Windows 95/98/Me (36)
Windows NT/2000/XP (49)
"Железо" (35)
Поиск информации (15)
Администратору
Windows NT/2000/XP (30)
Linux / Unix (14)
Юристу
Гражданское право (11)
Семейное право (8)
Трудовое право (9)
КоАП (7)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2004 Россия, Москва. Авторское право: Калашников О.А.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться

В избранное