Как объявить динамический массив?
Я хочу определить неизвестный размер массива. Однако я знаю, что это невозможно сделать на arduino. Итак, какие еще методы вы предлагаете? Я попытался использовать векторы, загрузив библиотеку ArduinoSTL, но это не работает. (Он печатает только Serial.println(сигнал); один раз, ссылаясь на код в ссылке pastebin ниже)
Вот мой код с векторами: https://pastebin.com/qBsRvk9Y
@Dominic Teo, 👍1
Обсуждение1 ответ
Вектор
пуст после конструктора по умолчанию. И в вашем коде в него никогда ничего не добавлялось. Таким образом, вы не можете использовать что-либо вроде idexing с помощью vect[индекса]
или метода vect.at(индекс)
. И поскольку исключений не существует, кто знает, что он делает после вызова вне зоны действия.
Вместо этого вам следует подумать о кольцевом буфере, так как использование динамической памяти сложно на таких ограниченных платформах. Даже использование класса строк Arduino часто является источником фрагментации памяти и ошибок типа "не хватает памяти".
- Безопасно ли использовать std::array (из C++ STL) на Arduino? Использует ли он динамическое выделение памяти?
- Полностью ли поддерживается C++ STL на Arduino?
- Работает ли конструкция int array[100] = {0} на Arduino?
- Массив динамического размера в качестве члена класса
- Итерация массива объектов
- Как получить размер (sizeof) массива структур
- Работает с gcc, но не с Arduino. ошибка: taking address of temporary array
- Как использовать лямбда-функции в Arduino?
неизвестный размер? размер оперативной памяти MCU известен, и параллельных программ нет, поэтому объявите максимально возможный массив, и все готово, @Juraj