![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Выполнение кода и выделение памяти для переменной |
|
C/C++ - Выполнение кода и выделение памяти для переменной
|
Пользователь Сообщения: 59 |
Привет.
Ниже приведу код иллюстрирующий мой вопрос: #include <stdio.h> int main() { goto label; auto int a; label: a = -32; printf("%d\n", a); } В результате выполнения программы мы получаем -32, то есть была полноценно использована переменная, код объявления которой при запуске программы выполнится не должен был. Цитирую из книжки (Программирование на языке СИ) на счёт объявления переменной с классом памяти auto (который я задал явным образом для иллюстрации): Цитата:
|
||
Отправлено: 14:07, 14-06-2008 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Если ставить точку остановки на auto int a; то отладчик останавливается аж на a = -32; со значением а=-858993460 (компилятор в Visual C++2008 Express), а на printf уже с присвоенным -32.
Самое интересное, если вспомнить что return 0; ещё не хватает, но это не так важно для сабжа, и поставить его перед auto int a; выхода не происходит. Это мне напоминает Pascal, в котором отдельным пунктом есть секция var, и которая не выполняется при трассировки, но она указ компилятору. |
Последний раз редактировалось Admiral, 14-06-2008 в 15:10. Отправлено: 14:55, 14-06-2008 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 59
|
Профиль | Отправить PM | Цитировать Если поставить точку остановки на auto int a; даже без goto:
1 #include <stdio.h> 2 3 int main() 4 { 5 // goto label; 6 auto int a; 7 // label: 8 a = -32; 9 printf("%d\n", a); 10 return 0; 11 } То при трассировке тоже будет перескакивать на a = -32; Это уже говорит о том, что auto int a; не является пошаговой инструкцией, например как a = -32;, но чем тогда является auto int a; и где оно записывается если не в пошаговой инструкции? P.S. Классификатор auto я поставил для декоративной наглядности, что речь идёт именно о таких переменных. |
Отправлено: 15:19, 14-06-2008 | #3 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Реализация функций длины переменной, выделение подстроки с параметрами в переменной. | NiOl | Скриптовые языки администрирования Windows | 7 | 31-01-2019 19:58 | |
выделение памяти (1,8Gb) в win 2000 для приложения запускаемого в cmd | impt | Microsoft Windows NT/2000/2003 | 0 | 31-05-2006 09:03 | |
Выделение процессу определенного количества памяти | Alex_Astana | Microsoft Windows 2000/XP | 0 | 09-03-2006 09:47 | |
Выполнение произвольного кода Windows Media Player9 | mar | Защита компьютерных систем | 3 | 24-12-2004 22:18 | |
Динамическо выделение памяти | ill | Программирование и базы данных | 2 | 04-12-2003 12:56 |
|