Поскольку компилятор AVR основан на компиляторе gcc, весьма вероятно, что он поддержит новое ключевое слово. Какую именно ошибку вы получаете. Я предполагаю, что это ошибка ссылки / компилятора вдоль строк неопределенной функции, а именно, оператора new. Существует разница между оператором new и оператором new: первый используется для создания объектов, а второй - для выделения памяти для объектов. Оператор new вызывает оператор new для типа создаваемого объекта, затем инициализирует v-таблицу объекта и вызывает конструкторы объекта. Чтение этого FAQ говорит, что оператор new не определен в стандартных библиотеках. Это легко исправить, просто определите одно:
void *operator new (size_t size)
{
return some allocated memory big enough to hold size bytes
}
и вам также нужно определить удаление:
void operator delete (void *memory)
{
free the memory
}
Единственное, что нужно добавить - это управление памятью, выделение и освобождение блоков памяти. Это можно сделать тривиально, следя за тем, чтобы не затереть существующую выделенную память (код, статические / глобальные данные, стек) У вас должно быть определено два символа - один для начала свободной памяти и один для конца свободной памяти. Вы можете динамически распределять и освобождать любой фрагмент памяти в этом регионе. Вам нужно будет самостоятельно управлять этой памятью.