Прошу совет по массиву данных

Тема в разделе "Arduino & Shields", создана пользователем DKo, 6 июл 2016.

  1. DKo

    DKo Нерд

    Добрый день!

    Прошу у Вас совета по правильному использованию ОЗУ.
    Задача простая: есть функция, которая производит исследование последовательности отсчетов, получаемых с датчика. Известно что максимальное число отсчетов не может первышать 100. При этом один отсчет является целочисленной беззнаковой переменной типа int. Тоесть всего максимальное количество ячеек памяти - 200.
    Как правильно выделить эти 200 байт? Использовать статичный массив + счетчик использовованных ячеек? или же использовать сторонние библиотеки и шаблоны типа list, vector, queue?
    Насколько я понимаю первый способ гарантированно займет 200 байт. Второй способ займет меньше 200 байт при условии что будут исопльзованы не все 100 отсчетов.

    + никаких дополнительных ухищрений не нужно при объявлении массива, чтобы он полность удалился из памяти при завершении функции?

    Заранее спасибо!
     
  2. ANV

    ANV Гуру

    Мне кажется нет смысла делать всякие ухищрения, я бы сделал статический массив.
     
    DKo нравится это.
  3. DKo

    DKo Нерд

    да, окей, спасибо, так и сделаю.

    А данные об используемой ОЗУ, которые отображаются поле комплекции учитывают только глобальные переменные? и следить за памятью, используемой функциями необходимо самостоятельно?
     
  4. DIYMan

    DIYMan Guest

    Именно так.
    Код (C++):
    // выводит расстояние от стека до кучи
    int freeRam()
    {
      extern int __heap_start, *__brkval;
      int v;
      return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval);
    }
    Вышеприведённую функцию можно юзать на предмет определения "свободной" памяти. На самом деле она показывает только расстояние от стека до кучи, и не учитывает свободные фрагментированные куски, но в первом приближении, как инструмент оценочный - вполне подходит.
     
    DKo нравится это.
  5. DKo

    DKo Нерд

    Хм, красиво, понял.
    Спасибо)