Добрый день! Прошу у Вас совета по правильному использованию ОЗУ. Задача простая: есть функция, которая производит исследование последовательности отсчетов, получаемых с датчика. Известно что максимальное число отсчетов не может первышать 100. При этом один отсчет является целочисленной беззнаковой переменной типа int. Тоесть всего максимальное количество ячеек памяти - 200. Как правильно выделить эти 200 байт? Использовать статичный массив + счетчик использовованных ячеек? или же использовать сторонние библиотеки и шаблоны типа list, vector, queue? Насколько я понимаю первый способ гарантированно займет 200 байт. Второй способ займет меньше 200 байт при условии что будут исопльзованы не все 100 отсчетов. + никаких дополнительных ухищрений не нужно при объявлении массива, чтобы он полность удалился из памяти при завершении функции? Заранее спасибо!
да, окей, спасибо, так и сделаю. А данные об используемой ОЗУ, которые отображаются поле комплекции учитывают только глобальные переменные? и следить за памятью, используемой функциями необходимо самостоятельно?
Именно так. Код (C++): // выводит расстояние от стека до кучи int freeRam() { extern int __heap_start, *__brkval; int v; return (int) &v - (__brkval == 0 ? (int) &__heap_start : (int) __brkval); } Вышеприведённую функцию можно юзать на предмет определения "свободной" памяти. На самом деле она показывает только расстояние от стека до кучи, и не учитывает свободные фрагментированные куски, но в первом приближении, как инструмент оценочный - вполне подходит.