Пользовательский распределитель для игрушечного языка - PullRequest
0 голосов
/ 30 мая 2011

У меня есть игрушечный язык для компиляции в C ++, который работает на MCU с 2 КБ ОЗУ (у меня нет доступа к std c ++ lib или boost и т. Д.), Чтобы все было равномерно, все мои объекты размещены в куча. Проблема в avr-gcc,

http://www.nongnu.org/avr-libc/user-manual/malloc.html

использует двухбайтовый заголовок для каждого ошибочного объекта, AFAIK, что означает, что возвращенный функциональный объект, не имеющий состояния, потребляет 3 байта (1 байт, чтобы соответствовать стандартному значению + 2 байта malloc), для байтов - 4 байта (2 байта) info + 2 байта для самого int) почти вдвое увеличивают размеры всех моих объектов, поэтому простое приложение с включенным / выключенным включением потребляет 1 КБ оперативной памяти.

У меня уже есть своя собственная объектная система, которая переопределяет new / delete (avr-gcc не имеет ее реализованной), поэтому я думаю, что пользовательский распределитель будет потреблять меньше памяти и немного ускорить процесс, поскольку он будет обслуживать запрос от кусок, который уже выделен. Есть ли реализации, которые будут работать в моем случае?

1 Ответ

2 голосов
/ 30 мая 2011

Только не выделяйте / не возвращайте много маленьких объектов. Я бы создал массив для своих объектов и передал бы индексы в качестве аргументов и возвращаемое значение.

...