реклама на сайте
подробности

 
 
> malloc в iar 4.20A
DenF1
сообщение May 4 2007, 11:23
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 15-03-06
Пользователь №: 15 267



Здравствуйте!

Странное поведение функции malloc обнаружилось. Иногда она возвращает указатель на уже выделенную область, хотя область эту является занятой. Складывается впечатление, что рушится системная информация о цепочке выделенных блоков, в результате ошибочной записи по кривому указателю. Где сидит инфа о выделенных блоках? Кто-нить сталкивался с чем-то подобным?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение May 4 2007, 12:14
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(DenF1 @ May 4 2007, 14:23) *
Здравствуйте!

Странное поведение функции malloc обнаружилось. Иногда она возвращает указатель на уже выделенную область, хотя область эту является занятой. Складывается впечатление, что рушится системная информация о цепочке выделенных блоков, в результате ошибочной записи по кривому указателю. Где сидит инфа о выделенных блоках? Кто-нить сталкивался с чем-то подобным?


Это врядли. Но по своему проекту заметил одну интересную особенность хотя и понятную (интересную для человека). IAR сегменты располагает как придётся. Человек обычно под кучу край озу выделяет, а компилятор в середине озу. Таким образом если совершенно другой ваш сегмент (например стек) вылазит за отведённые (вами же) пределы, то компилятор об этом знать не будет (не статическое распределение памяти а динамическое её потребление. Тем же стеком к примеру). Вот и получится что malloc выделяет занятую память (согласно рамкам установленным компилятором под сегмент она свободна.)

Для того чтобы избежать такой ошибки я чётко определяю реальные размеры стека и прибавляю запас. После чего распределяю оставшуюся кучу.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 17:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016