Цитата(kan35 @ Apr 26 2012, 20:53)

Видимо под все переменные выделяется гарантированное место в стеке на все время жизни задачи, а когда оптимизация включена, то видимо переменные убиваются и возникают динамично, подчищая стек за собой. Правильно ли я это понимаю?
Вообще компилятор ничего не знает про задачи. Есть функции и локальные переменные. Оптимизируя, компилятор старается интенсивно использовать регистры для хранения локальных переменных, и избавляется от них как можно раньше. Так код получается короче и быстрее, к тому же меньше расходуется стек.
То есть по сути да, вы правильно понимаете.
Цитата(kan35 @ Apr 26 2012, 20:53)

Если так, то конечно с этим можно смириться, но крайне неудобно, что с определенного момента debug target перестает работать, так как случается нехватка стека, при этом прога сваливается в самом начала жизни потока, то есть переменные видимо как то разом инициализируются... При этом release отлично работает, но отлаживаться сложнее.
Ну да, обычное дело. Точно так же в режиме отладки код может просто не поместиться в память программ.