Есть ли ограничения на размер массива в Arduino Mega 2560?
Я пишу код Arduino с тремя массивами.
Два из них double, а один int. Далее первые два массива содержат около 420 элементов для каждого. Теперь я заметил, что при наличии более 89 элементов в 3-м массиве программа останавливается и застревает в выполнении. Но с числом элементов 89 или меньше он работает без проблем.
В чем может быть проблема?
@e1065273, 👍-3
Обсуждение1 ответ
▲ 0
Mega имеет 8 КБ памяти.
Вы используете:
- двойной (то же, что и float на Arduino, см. двойной) , 4 байта * 420 элементов * 2 массива = 3360 байт
- int (2 байта) * 89 = 178 байт
Всего это 3538 байт
Это около 50 %, поэтому я не знаю, что такое «остальное». Вы можете взглянуть на другой связанный вопрос, который может дать некоторые ответы (например, использование динамической памяти, пробелы в памяти или локальные/стековые переменные): Каковы традиционные способы оптимизировать использование памяти программы?
,
@Michel Keijzers
Смотрите также:
- Работает ли конструкция int array[100] = {0} на Arduino?
- Массив функций
- deserializeJson() не удалось: NoMemory при отправке последовательного json с использованием ArduinoJson
- New.cpp запрограммирован неправильно? Ардуино 1.8.9
- C++ против языка Arduino?
- ошибка: ожидаемое первичное выражение перед токеном ','
- Ввести идентификатор чипа ESP32 в строковую переменную (новичок в Arduino/C++)
- Передача функции-члена класса в качестве аргумента
Трудно сказать, не видя вашего кода., @StarCat
Ограничение составляет 32767 элементов. Все остальное - проблема с вашим кодом., @Majenko
Также следите за тем, чтобы не быть слишком близко к максимальному объему памяти. Если места для размещения переменных в стеке недостаточно, программа каким-то образом рухнет., @chrisl
Эти массивы объявляются по размеру во время компиляции? что сообщает IDE, насколько согласовано использование вашей памяти при компиляции программы. Как уже говорилось ранее, трудно помочь, не видя вашего кода., @Chad G