Динамический массив структур
- Войдите на сайт для отправки комментариев
Ср, 02/04/2014 - 22:59
Добрый день
Есть некая структура:
struct _User { String Name; float L; };
Создать статический массив из структуры без проблем, а вот как сделать динамический?
На уме только всевдодинамический массив: инициализировать массив, скажем на 30 элементов, а по мере добавления держать флаг-размер реального массива. Но не знаю или это кошерно и что делать если количество "реальных" элементов станет больше тех же 30?
new() или malloc() + структуры ссылающиеся на себя организованные в связанный список. Вот только что делать, когда память закончится? :D
Не забываем delete() или free() для выкидывния из памяти структур, которые больше не нужны.
А вот вопрос имею - насколько вообще применимы такие приемы, как динамический массив в Ардуино ?
Ведь при динамическом выделении/освобождении память фрагментируется. Не возникнет ли от этого проблемы при эксплуатации 24/365 ?
Я вообще не могу представить задачу для ардуино, где требуется именно динамическое использование структур. Везде хватает грамотно продуманной логики поведения и статического использования.
Как Вы со статической логикой обработаете,например, последовательно происходящие события, длительность обработки которых может быть больше, чем период между их возникновением.
А если при этом длительность событий еще и разная? Например более позднее событие может закончится раньше
Проблема в том, что эти события нужно накапливать где то. Либо статический массив максимального размера, который сожрет кучу памяти, либо динамическое выделение по необходимости
Например у меня есть система, принимающая радиокоманды. Радиокоманды принимаются прерываниями, прием длится микросекунды, а обработка их длится минутами. Их желательно накапливать. Но динамическое выделение делать боюсь, т.к. система работает 24/365. Сейчас потерянные команды просто игнорируются
Так что "не могу представить" это только от недостатка опыта
Добрый день!Подскажите пожалуйста как объявить динамический массив так,чтобы потом в зависимости от условий которые определяются в списке if делать разные присвоения массиву?Вот фрагмент кода:
непонятно почему если вывести массив в условии if он считается правильно,но когда доходит до цикла значения показываются с потолка
1-2 - объявил массив глобально
7-18 - объявил и заполнил массив локально
И почему там мусор? Ну хрен его знает.
перефразирую иронию: у тебя массив в строке 9 и массив в строке 17 - это РАЗНЫЕ массивы с одинаковыми именами.
ну подскажите как сделать правильно,чтобы это был один массив,вернее два,но заполнялись они в зависимости от выбраных условий
уже два дня голову ломаю.Если удрать объявление глобальное,то компилятор ругается в цикле for,а в условии if как-будто массив не видет.Есть способ сделать правильно?
9-10, 15-16 - убрать int
А вообще я бы сделал вынес вот это всё в 1-2 и до кучи в PROGMEM, чтобы константами память не занимать.
так если убрать int как же тогда присвоить массивам значения?
int имя = значение - это объявление с инициализацией
имя = значение - это присвоение.
Ты делаешь первое. У тебя появляется еще один локальный массив с тем же именем, который уничтожается при выходе из функции.
Если уберешь int, то будут заполенены уже объявленные глобальные массивы.
Спасибо,это я уже понял,что создаю другой массив объявляя ее через int. Но теперь запара как заполнить объявленный ранее динамический массив
int solod_time[]={240,270,300,330};
Зачем его заполнять, когда можно сразу объявить заполненным?
Делаешь 4 массива и используешь их в зависимости от флага.
дело в том,что заполнение должно происходить от условий выбора.Например выбрал 1 пункт меню-массив заполнился одними даными,выбрал 2-другими.Если так делать нельзя,тогда буду искать другие пути.Спасибо за помощь
Читай сообщение полностью, а не через строку.