Цитата(Сергей Борщ @ Jan 19 2007, 13:06)

Где там? В куче? Зарадибога. Заметьте, вы получили указатель не "на свободное место в куче", а на свободный участок указанного вами размера. В этот участок никто больше не залезет. Но и вы не имеете права лезть за границы этого участка.
Цитата(SasaVitebsk @ Jan 19 2007, 01:21)

Не зная об этом я беру и выполняю операцию OW_free(). В результате происходит крах проги. Поэтому я и высказал сомнение о реальности.
Никакого краха. В кучу возвращается выделенный вам участок, на который указывал OW_Rom_Device. Остальные участки если и были выделены кому-то без вашего ведома продолжают существовать.

Усложним задачу.
Давайте в цифрах. Для простоты начальный уровень 0. Потом я занял 100. Компилятор выделил 10.
Я освободил до нуля. И опять забрал кусок, на этот раз 200. И запортил его. Крах?
Я не говорю что так будет. Я говорю что это у меня не уложилось в голове, и поэтому я предположил что компилятор самостоятельно не имеет права использовать кучу. Что в принципе пишите и Вы.
Теперь ещё один момент. Конечно чисто теоретически поставленная мной задача(новая) вполне разрешима с хорошим менеджером кучи. Но мы то говорим о AVR.
Если брать например DELFI (C для PC я не пользую), то там я имею право например выделить память под A,B,C,D а потом освободить место из под B. Потом если я выделю память под переменную E, то я не знаю где её расположит менеджер кучи. Он может её расположить за D, а может (если размеры подойдут на место дырки

. Я не в праве гадать. Если эти переменные использовать правильно, то разницы ведь нет. А объём оставшейся свободной памяти я получаю исправно.
Но в IAR AVR под С такого нет! Я был удивлён. Процедурой free, я могу только освободить одну или несколько переменных от конца кучи. Я не могу освободить B! Могу только B,C,D. Да и занять я могу просто место, а не создать переменную. Вроде это есть в C++. Не знаю. Не работал ещё.
Но это реально указывает на то, что менеджер очень упрощённый. Что в принципе обосновано. Если для МК делать что-то мощнее, то это будет слабо востребовано.