Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
#1

что будет? - C++

14.05.2010, 23:16. Просмотров 342. Ответов 9
Метки нет (Все метки)

что случится если запустить такой код

C++
1
2
3
4
5
6
7
8
 
 long int *p, i = 0;
 
     while(1)
     {
       i++;
       p[i] ;
     }
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
oxotnik
 Аватар для oxotnik
1586 / 1063 / 33
Регистрация: 21.08.2008
Сообщений: 4,545
Записей в блоге: 1
14.05.2010, 23:22     что будет? #2
ниче страшного не будет
Psixodelik
 Аватар для Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
14.05.2010, 23:25     что будет? #3
Комп задумается? xD xD
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 23:28     что будет? #4
лендер, вечный цикл.
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
14.05.2010, 23:29  [ТС]     что будет? #5
ОЙ нетак написал, извиняюсь
C++
1
2
3
4
5
6
7
 long int *p, i = 0;
 
     while(1)
     {
       i++;
       p[i] = 0 ;
     }
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
14.05.2010, 23:30     что будет? #6
лендер, ваша программа со временем выйдет за пределы своего адресного пространства и программа аварийно завершится
лендер
46 / 46 / 2
Регистрация: 12.01.2010
Сообщений: 183
14.05.2010, 23:33  [ТС]     что будет? #7
тоисть в памяти я нигде не нагажу?
Psixodelik
 Аватар для Psixodelik
40 / 39 / 2
Регистрация: 27.11.2009
Сообщений: 100
14.05.2010, 23:35     что будет? #8
А можно вопрос? Наверно я туплю или проспал лекции по указателям....но почему переменная объявлена как *p, а в цикле она уже используется как массив? И кстати M128K145, посмотрел в дебаге, аварийное завершение будет сразу, как только дойдёт до p[i] = 0 ;
CyBOSSeR
Эксперт C++
 Аватар для CyBOSSeR
2297 / 1667 / 86
Регистрация: 06.03.2009
Сообщений: 3,675
14.05.2010, 23:37     что будет? #9
Цитата Сообщение от лендер Посмотреть сообщение
тоисть в памяти я нигде не нагажу?
Нет. Во-первых каждый процесс исполняется в своем адресном пространстве, а во-вторых ОС не даст тебе этого сделать и при попытке доступа с не зарезервированной области памяти выдаст исключение.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2010, 01:51     что будет?
Еще ссылки по теме:

C++ Что будет выведено на экран?
0 умножить на что-угодно не всегда будет 0? C++
C++ Что будет вызвано в результате вызова f()?
Что будет на выходе, не компилирует? C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
easybudda
Эксперт С++
 Аватар для easybudda
9412 / 5435 / 917
Регистрация: 25.07.2009
Сообщений: 10,428
15.05.2010, 01:51     что будет? #10
Цитата Сообщение от Psixodelik Посмотреть сообщение
посмотрел в дебаге, аварийное завершение будет сразу, как только дойдёт до p[i] = 0 ;
видимо, по тому, что изначально p ничем не инициализирован...
C
1
2
3
4
5
6
7
8
long int *p, i = 0;
 
     p = &i; 
     while(1)
     {
       i++;
       p[i] = 0 ;
     }
вот так должно веселее быть...
Yandex
Объявления
15.05.2010, 01:51     что будет?
Ответ Создать тему
Опции темы

Текущее время: 08:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru