Про линкер надо читать в хелпе линкера.
В хелпах самая актуальная информация, никакие книжки не поспевают за изменениями в свойствах компиляторов и линкеров.
malloc может возвращать указатель только на RAM иначе в нем нет смысла и это полная чушь.
Чтобы динамическое выделение памяти работало, надо в опциях проекта явно задать размер HEAP-а. Если это не сделано, то heap компилятором выделяется от верхушки области стека и понятно что стек наезжает на heap и через пару вызовов его портит. Более того, если стек недостаточен, то он растет вниз дальше и портит все рабочие переменные. Это, конечно, с установками по умолчанию для линкера в RVDK
Цитата(Kail @ Nov 11 2006, 17:21)

Действительно при уменьшении размера массива ошибки исчезают. Однако непонятно вот что, у меня программа занимает 12 кб во флэше. Есть 2 массива из 128 элементов типа short, т.е. 256 байт. То есть места и во флэше и в оперативной памяти полно, из-за чего могут такие ошибки появляться?
И вообще работа линкера - темный лес для меня. Если с Flash еще понятно, если ее мало, то программа просто не влезет. А вот с RAM непонятки. Как например смоделировать ситуацию, чтобы нехватило RAM, и что при этом произодет? Как вообще отследить работу RAM? И вот еще вопрос, malloc возвращает указатель на область памяти во флэш или RAM? Если о флэш (о чем я сильно подозреваю), то из какой секции? Люди знающие, подскажите плиз или посоветуйте книжку толковую общетеоретическую по работе линкера. А то про языки программирования и копмиляторы - куча литература, а линкер все забывают.