Каковы альтернативы malloc () в C? - PullRequest
20 голосов
/ 11 февраля 2010

Я пишу C для платы MPC 555 и должен выяснить, как распределить динамическую память без использования malloc.

Ответы [ 13 ]

0 голосов
/ 25 февраля 2010

FreeRTOS содержит 3 примера реализации распределения памяти (включая malloc()) для достижения различных оптимизаций и вариантов использования, подходящих для небольших встроенных систем (AVR, ARM и т. Д.) См. Руководство FreeRTOS для получения дополнительной информации.

Я не вижу порта для MPC555, но не составит труда адаптировать код под ваши нужды.

0 голосов
/ 11 февраля 2010

Вас может заинтересовать: liballoc

Это простая, простая в реализации замена malloc / free / calloc / realloc, которая работает.

Если вы заранее знаете или можете определить доступные области памяти на вашем устройстве, вы также можете использовать их libbmmm для управления этими большими блоками памяти и обеспечения резервного хранилища для liballoc. Они BSD лицензированы и бесплатны.

0 голосов
/ 11 февраля 2010

Если есть проблемы с выделением динамической памяти из кучи, вы можете попробовать выделить память из стека с помощью alloca (). Обычные оговорки применяются:

  • Память исчезла, когда вы вернетесь.
  • Объем памяти, который вы можете выделить, зависит от максимального размера вашего стека.
...