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

Название темы: Segmentation fault
Показать сообщение отдельно

Старожил


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

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


glassMonk
Попробовал и я. Действительно в seg fault падает, не после 4, а после 8 (то есть на 8 мом).

Дело в том, что при запуске некой проги (да и отдельной функции), она во-первых, сохраняет адрес возврата. Адрес она сохраняет в первых 4х байтах
стека выделенного под эту прогу. Уже за этим участком выделеяется место для остальных переменных (Все локальные переменные хранятся в стеке). Т.е. чтобы выйти за границы стека нужно записать строку длинной размер буффера + 4  байта.

Если в данный пример запустить с параметром  4 < x < 8, то просто мы гробим данные, которые пренадлежат адресному пространству функции. Скорее всего мы гробим argc,argv

ЗЫ Извини если, что то криво объясняю. Просто сам только недавно увлекся данной темой, и еще много чего не понимаю/понимаю не до конца...

[s]Исправлено: Zur0, 20:10 11-08-2003[/s]

-------
Лучше молчать и казаться идиотом, чем заговорить и развеять сомнения...


Отправлено: 12:07, 11-08-2003 | #6

Название темы: Segmentation fault