Добрый день. Компилятор выдал asm - код С программы и в нем вызов call __chkesp. Вопрос: Где можно полюбопытствовать на предмет работы этой функции?
Эта штука вставится автоматом даже при отключенных опциях типа stack checking и пр., если ты выделил переменных на стеке больше 4кб. Нада это чтобы реализовать механизм разрастания стека в винде - а то ты выделишь 10000000 на стеке и обратишься к первому элементу - и "перелитишь" через гуард пейджи - что системе все адресное пространство ниже стека гуардить?
> если ты выделил переменных на стеке больше 4кб Фига, рост стэка обеспечивает __chkstk а __chkesp проверяет после вызова функции баланс стэка на предмет чтобы ты не вызвал функцию с неправильным calling convention. Чтобы компилятор не генерил такой код рекомендуется компилить release версию а не debug.
... спасибо большое. Извините, а можно ли получить asm - код программы без этой функции (имееется в виду EXTRN __chkesp:NEAR), в обычном режиме *.asm формируется в папке debug и только с этой функцией.
Dr.Golova Да - сорри попутал - протер очки - esp и stk в глазах одинаково видится... На скока я помню __chkstk просто обрящается к каждой странице выделяемой на стеке. А __chkesp вообще состоит из инструкции jnz error и ret.
_animaTOR_ формируется в папке debug и только с этой функцией Среди опций командной строки debug-версии есть опция /GZ. Удали ее.
... Огромное Человеческое Спасибо !! Заработало ВСЕ и разными способами вопрос с Вашей Помощью - решен !