Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: использование malloc() в WinARM
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
alekstr
Понадобилось создание/освобождение массивов неизвестной заранее величины, процессор AT91SAM7S256. В примерах из WinARM использование malloc() и free() нашел только для FreeRTOS. Попробовал использовать эти функции без операционной системы - так вроде работает, но в определенные моменты все рушится. Корректно ли вообще использовать эти функции без OS? И если да, то как контролировать расход и остаток памяти?
_Pasha
Цитата(alekstr @ May 27 2009, 11:32) *
но в определенные моменты все рушится.


Из-за фрагментации?
alekstr
Цитата(_Pasha @ May 27 2009, 16:58) *
Из-за фрагментации?

Пока не могу понять. Использую malloc() при чтении содержимого папки с SD-карты для создания списка файлов и вложенных папок. При переходе в другую папку очищаю список, уничтожая объекты через free(). И иногда (не всегда) при уничтожении последнего элемента списка все зависает. Вот у меня и возник вопрос - а корректно ли использовать эти функции без ОС с ее менеджером свободной памяти?
_Pasha
Цитата(alekstr @ May 27 2009, 12:25) *
И иногда (не всегда) при уничтожении последнего элемента списка все зависает. Вот у меня и возник вопрос - а корректно ли использовать эти функции без ОС с ее менеджером свободной памяти?

Вот и добейте софтину до стабильно нерабочего "зависания" smile.gif

Конечно, корректно. Вы видели FreeRTOSовскую обертку для malloc/free ? Только приостановка процессов, чтоб не гадили  пытались делать то же самое, т.к. malloc/free не реентерабельны.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.