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

 
 
 
Reply to this topicStart new topic
> использование malloc() в WinARM, использование памяти из кучи в WinARM для AT91SAM7S
alekstr
сообщение May 27 2009, 08:32
Сообщение #1





Группа: Участник
Сообщений: 11
Регистрация: 24-12-07
Из: Кемеровская обл.
Пользователь №: 33 590



Понадобилось создание/освобождение массивов неизвестной заранее величины, процессор AT91SAM7S256. В примерах из WinARM использование malloc() и free() нашел только для FreeRTOS. Попробовал использовать эти функции без операционной системы - так вроде работает, но в определенные моменты все рушится. Корректно ли вообще использовать эти функции без OS? И если да, то как контролировать расход и остаток памяти?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 27 2009, 08:58
Сообщение #2


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(alekstr @ May 27 2009, 11:32) *
но в определенные моменты все рушится.


Из-за фрагментации?
Go to the top of the page
 
+Quote Post
alekstr
сообщение May 27 2009, 09:25
Сообщение #3





Группа: Участник
Сообщений: 11
Регистрация: 24-12-07
Из: Кемеровская обл.
Пользователь №: 33 590



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

Пока не могу понять. Использую malloc() при чтении содержимого папки с SD-карты для создания списка файлов и вложенных папок. При переходе в другую папку очищаю список, уничтожая объекты через free(). И иногда (не всегда) при уничтожении последнего элемента списка все зависает. Вот у меня и возник вопрос - а корректно ли использовать эти функции без ОС с ее менеджером свободной памяти?
Go to the top of the page
 
+Quote Post
_Pasha
сообщение May 27 2009, 12:42
Сообщение #4


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



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

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

Конечно, корректно. Вы видели FreeRTOSовскую обертку для malloc/free ? Только приостановка процессов, чтоб не гадили  пытались делать то же самое, т.к. malloc/free не реентерабельны.
Go to the top of the page
 
+Quote Post

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

 


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


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