Как объявить динамический массив?

c++ array vector stl

Я хочу определить неизвестный размер массива. Однако я знаю, что это невозможно сделать на arduino. Итак, какие еще методы вы предлагаете? Я попытался использовать векторы, загрузив библиотеку ArduinoSTL, но это не работает. (Он печатает только Serial.println(сигнал); один раз, ссылаясь на код в ссылке pastebin ниже)

Вот мой код с векторами: https://pastebin.com/qBsRvk9Y

, 👍1

Обсуждение

неизвестный размер? размер оперативной памяти MCU известен, и параллельных программ нет, поэтому объявите максимально возможный массив, и все готово, @Juraj


1 ответ


1

Вектор пуст после конструктора по умолчанию. И в вашем коде в него никогда ничего не добавлялось. Таким образом, вы не можете использовать что-либо вроде idexing с помощью vect[индекса] или метода vect.at(индекс). И поскольку исключений не существует, кто знает, что он делает после вызова вне зоны действия.

Вместо этого вам следует подумать о кольцевом буфере, так как использование динамической памяти сложно на таких ограниченных платформах. Даже использование класса строк Arduino часто является источником фрагментации памяти и ошибок типа "не хватает памяти".

,