![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| _IGOR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 9.3.2003 Репутация: нет Всего: нет |
Интересная ситуация
пишу: char ch[1]; ch[10]='t'; ВЫкидывает - и ЭТО ПОНЯТНО почему Далее пишу char ch[10]; ch[100]='t'; НЕ ВЫКИДЫВАЕТ!!! - НЕ ПОНЯТНО!!! Может кто объяснит? |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
Памыть не зарезервированна, поэтому куда он будет писать вообще не ясно. Когда писал ch[1]; ch[10]='t'; То программа обращалась в область памяти куда ей явно лесть было нельзя. А во втором случае возможно просто попала в какую то область памяти, которая уже отведена программе. Если воспользоваться другим компилятором или запустить на другой системе, то возможно что и второй код ошибку выдаст. |
|||
|
||||
| vickr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.5.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
В самом деле, к чему подобные эксперименты? Завтра ты, _IGOR, запустишь на выполнение то же самое, а получишь обратное - типа "сначала выкидывает, а с конца - нет". Ведь очевидно, что так делать нельзя, такой код приводит к неопределенному поведению программы, которое ты и получил - то выкидывает, то нет.
--------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:) |
|||
|
||||
| _IGOR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 9.3.2003 Репутация: нет Всего: нет |
Подобные эксперименты(в общем вышло случайно) нужны для более тчательного понимания языка(во загнул)
|
|||
|
||||
| vickr |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 13.5.2003 Где: Санкт-Петербург Репутация: нет Всего: нет |
Убедил. --------------------
Каждую секунду, тыкая в клавиши, мы давим насмерть не менее 1000 микробов =:) |
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
В C нет проверки выхода за границу массива. Почитай литературу по языку, везде говорится, что ответственность лежит на программисте.
-------------------- С уважением, А. Фролов. |
|||
|
||||
| DENNN |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3878 Регистрация: 27.3.2002 Где: Москва Репутация: 1 Всего: 43 |
И во многих случаях это избавляет от страшного изврата |
|||
|
||||
| Step |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
и программы от этого работаю быстрее чем в делфи -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
||||
|
|||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |