![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
простой вопрос: что будет на консоли ?
вопрос сложнее : что покажет дебаггер VS2005\VS2008 ? ![]() вопрос самый сложный : почему и как должно быть ?) (я уже начал сомневаться в майкрософт).... -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
11 будет расшифровую - sizeof статического массива == колво элементов * размер элементов а строка "123456789" содержит 10 элементов (+ '\0') |
|||
|
||||
| vadiml |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 310 Регистрация: 27.7.2007 Репутация: 2 Всего: 7 |
sizeof("123456789")+1
нормальный компилятор должен дать 11 а что такого появилось в VC, а то я им с 6й версии не пользовался |
|||
|
||||
| Fin |
|
|||
![]() Дракон->Спать(); ![]() ![]() Профиль Группа: Участник Сообщений: 687 Регистрация: 4.1.2006 Репутация: 3 Всего: 10 |
9 символьных знаков + нуль-терминал + 1 итого 11.
Скорее всего дебагер считает размер ссылки на строку, которая и есть 4 байта. -------------------- Пролетал мимо. |
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
Alek86 ну это был простой вопрос) а вот отладчик (См. скриншет) так не считает )) это баг или фича ? <- этот вопрос интереснее.
-------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
ты бы выделил...
дурной отладчик, значит |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
дебагер 2008 покажет 11
|
|||
|
||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
а скриншет выше с какой по-твоему сделан ?
вот конкретно с этой. -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| Alek86 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1299 Регистрация: 30.1.2007 Где: Киев Репутация: 21 Всего: 25 |
2005 тоже 4 показывает - можешь на мелких бочку накатить
кстати, тема ближе к ветке Visual C++/MFC/WTL и к чистым сям не относится... |
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
значит у тя кривая студия ;)
|
|||
|
||||
| korian |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 651 Регистрация: 8.3.2008 Где: Украина, Харьков Репутация: 3 Всего: 17 |
причем тут студия
у него sizeof в watch'е а переменную "123456789", можно рассматривать 2-я вариантами: 1) const char a[] = "123456789"; 2) const char* b = "123456789"; т.к. первый вариант - это константа, имху смысла в watch'е он не имеет, имху поэтому выбирается второй вариант. уверен, что sizeof(a) в watch'е, при первом варианте покажет 10. Это сообщение отредактировал(а) korian - 15.3.2008, 21:43 |
|||
|
||||
| vinter |
|
||||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
поверь, ты не открыл Америку, только вот две одинаковые студии(разные издания) показывают по разному
это в любом случае константа, которая лежит в Text Segment(справедливо для студии) |
||||
|
|||||
| jonie |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5613 Регистрация: 21.8.2005 Где: Владимир Репутация: 15 Всего: 118 |
наверно я идиот, но не вижу на твоем скриншете в watch-ах ничего похожего на sizeof("21343242");
я не вижу "две одинаковые студии(разные издания) показывают по разному" этого -------------------- Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет... |
|||
|
||||
| baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
Вычислятель в окошке watch имеет некоторые ограничения (большинство описано msdn), так что наивно от него ожидать некоторых вещей.
В частности, для "123456" watch покажет тип char* и значение 0x00000. Это представляется логичным, т.к. эта строка не принадлежит отлаживаемой программе. vinter,
пошевели, в чьем Text Segment она лежит? и с какого момента? и причем тут студия?
это какие? все мои одинаково. я чего-то пропустил? |
||||
|
|||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
jonie, сорри это я ступил
првел пару экспериментов, так вот непонятно что в этом случае показывает дебагер, но это не размер указателя, так как при х64 сборке, он все равно остается 4..хотя другие указатели как положено, показываються размером в 8 байт.. Пусть будет глюк, он в принципе не существенный, т.к в реальной ситуации это никак не воспроизводится(чтобы помешать по крайней мере) Добавлено через 7 минут и 49 секунд чем? в своем разные компиляторы делают по разному, например Borland Builder 6.0 не помещает конст. строку в Text Segment |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |