Форум » Для начинающих. » Переполнение стека » Ответить

Переполнение стека

Alexandr: Здравствуйте! Не могу найти ответ на такой вопрос. Как можно отследить переполнение стека. Как я понимаю, оно может наступить далеко не сразу после начала работы программы. Значит при пошаговой проверке в симуляторе его можно и не выявить.

Ответов - 9

Ewgen: Можно. View-Hardware Stack.

Alexandr: Спасибо, но если можно то поподобнее.

Ewgen: Вы тогда огласите весь список вопросов. А то даже непонятно,что Вам непонятно.


Evgeny Korabelnikov: Работу стека можно отследить в симуляторе (в соответствующем окне). Кроме пошаговой проверки, есть ещё и "автомат", который сильно ее ускоряет. В большинстве случаев, переполнение стека связано с тем, что вызов ПП не обеспечен возвратом из нее. Последствия переполнения стека всегда печальны. На мой взгляд, в этом случае, лучше уповать не на помощь симулятора, а чётко знать/соблюдать все "стек-правила" (не допускать ошибок).

Ewgen: Не в большинстве,а именно с тем,о чем Вы написали.

Alexandr: Ewgen пишет: Вы тогда огласите весь список вопросов. А то даже непонятно,что Вам непонятно. Извините если отвлекаю вас не совсем корректно поставленными вопросами, просто воплощаю свой первый проект, опыта пока совсем нет, вот и возникают вопросы на которые не нахожу ответы или нахожу, но до конца в них не уверен. Весь список вопросов огласить не могу - нет его, вопросы возникают в процессе работы. Вот и из вашего ответа, ничего не понял. Я же не зря выбираю раздел для начинающих - это надо учитывать. После ответа КЕА сразу все стало понятно.

Ewgen: Вы спросили,я на Ваш вопрос конкретно и ответил.

Evgeny Korabelnikov: Александр, если в ходе работы возникнет какая-то конкретная "стек-бяка", требующая объяснений, то опишите ее. Разберёмся.

Evgeny Korabelnikov: Ewgen: Не в большинстве,а именно с тем,о чем Вы написали. Я не ошибся. Именно в большинстве, так как есть случаи, когда все вызовы "укомплектованы" возвратами, но стек может переполнится. Например, в ПИКах базового и среднего семейства, имеется 8-уровневый стек. Некоторые программы строятся по принципу типа "сначала серия вызовов, а после этого, соответствующая серия возвратов" (задействуется от 2-х и более уровней стека). Это абсолютно нормально. Но до определённой "границы": в данном случае, серия вызовов не должна превышать 8-ми. Если превысит, то будет переполнение стека (глюк) и никакая дальнейшая серия возвратов не поможет. Естественно, что подобного рода "расклад" очень редок (пока не сталкивался. Обычно достаточно не более 4-х стек-уровней), но тем не менее, в приложении к ПИКам базового и среднего семейства (в ПИКах 18-й серии, разработчики подсуетились и значительно увеличили количество стек-уровней), это возможно. Поэтому и применил словосочетание "в большинстве случаев". Вернее, в подавляющем большинстве случаев. Чтобы смысл сказанного стал понятен, представьте себе не 8-уровневый стек, а например, 2-уровневый. При таком "раскладе", многие проги "глюканули" бы не смотря на то, что в программном смысле, в них всё в порядке.



полная версия страницы