Имя пользователя:
Пароль:
 

Название темы: Строки в С\С++
Показать сообщение отдельно

Модер


Сообщения: 1716
Благодарности: 17

Профиль | Сайт | Отправить PM | Цитировать


VBMUSTDIE
Цитата:
Так получается при объявлении
char* pch = "Some_String"
память не выделяется?
Наиболее вероятно, что строка будет помещена в сегменте данных, а переменная - в стеке (если локальная). Считать это выделением памяти или нет - решать вам. Я же имел в виду что-нибудь типа new.

Цитата:
Но если попробовать вести строку в ЛЮБОМ месте программы то она выведится
printf("%s\n", pch);
Как так память не выделяется а функция выводит?
1) В printf передается адрес строки "%s\n", тут ситуация с памятью такая же, как и выше.
2) Если только %s, то нетрудно видеть, чтоб можно вывести этот текст без дополнительного выделения памяти даже на стеке. Выводим текст до %s, потом аргумент, потом снова текст до %s, снова аргумент, и т.д.
3) Если есть %d и т.п., то сложнее, но память может выделиться внутри printf (особенно если ей на вход отдается свой нетривиальный объект) и освободиться там же.

-------
Васкецов Сергей
http://registry.oszone.net


Отправлено: 23:10, 11-04-2003 | #27

Название темы: Строки в С\С++