Перейти к содержанию

Динамический Массив


zeycon

Рекомендуемые сообщения

есть двухмерный массив но заранее не известно количество элементов,

как в CodeVision организовать динамические массивы чтобы можно было

по ходу программы задавать количество элементов ?

если тебя ударили по левой щеке — подставь правую... руку и с разворота бей ногой в челюсть

Ссылка на комментарий
Поделиться на другие сайты

Реклама: ООО ТД Промэлектроника, ИНН: 6659197470, Тел: 8 (800) 1000-321

Смотрите в сторну функций "malloc", "calloc","realloc" если есть их реализация в поставки данного компилятора. Обычно заголовочный файл для этих функций "stdlib.h". Второй вариант, написать свою реализацию этих функций. Третий вариант, зарезервировать в памяти максимально возможный размер массива.

Отступление: для не МК в С++ для таких целей очень удобен "vector" из "stl"

Изменено пользователем rtfcnf

Это сообщение поставляется "как есть", без каких либо гарантий. Автор сообщения не несёт какой либо ответственности

за материальный, либо моральный ущерб причиненный данным сообщением напрямую или косвенно.

Ссылка на комментарий
Поделиться на другие сайты

20% скидка на весь каталог электронных компонентов в ТМ Электроникс!

Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!

Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!

Перейти на страницу акции

Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849

Динамическое выделение памяти, если мы имеем дело с микроконтроллерами, это обычно плохо. Оно имеет смысл в многозадачных системах, где несколько задач разделяют ресурсы между собой. И, если на "большом" компьютере свободная память есть практически всегда (по крайней мере, в swap-файле), то в случае с микроконтроллером достаточно одного неверного движения, чтобы "куча" налезла на стек. Поэтому желательно резервировать память статически, а для экономии стека не увлекаться рекурсией и излишними вложенными вызовами функций.

Что же касается двумерного массива, то вместо него можно использовать одномерный (статический или выделенный через ...alloc), а индекс элемента получать умножением номера строки на ширину массива и прибавлением номера столбца:

array[y*array_row_length + x]

Из соображений читаемости текста это можно оформить как макроопределение:

#define ARRAY_2D(y, x) (array[(y)*array_row_length + (x)])

и обращаться:

ARRAY_2D(4, 5) = 6;

Ссылка на комментарий
Поделиться на другие сайты

  • 2 месяца спустя...

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Динамическое выделение памяти, если мы имеем дело с микроконтроллерами, это обычно плохо...

Всё зависит от задачи. Может быть такая ситуация в которой без этого никак. Однако по опыту скажу, что работает всё это гораздо медленнее, поэтому, если без этого можно обойтись, то лучше "обойтись".

Пока ты жив, надежда есть.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
  • Сообщения

    • Начнем с того, что это НЕ предУСИЛИТЕЛЬ, а тупо повторитель, да еще и с регулировкой уровня выходного сигнала. Скорее всего, данная схема предназначалась для наушников.  А закончим тем, что в изображении схемы дебильная ошибка во входных цепях. Если сделаете точно так, как на схеме, то предвижу вопль: "Спаял, а не работает!"
    • Припой не ложится потому-что флюс (хотя бы канифоль) нужен... 
    • По версии 5 действительно есть ощущение что не хватает мощи, хотя громко музыку в квартире я не слушаю, всегда остаётся запас. Трансформаторы у меня 16,8В 3А 2 шт. Конденсаторы 4 шт по 10000 (по факту около 8500) мкФ. Этого недостаточно?  После праздников попробую подобрать колонки на 4ом, доложу о впечатлениях. Может быть поменяю БП. Хотя вчера вечером послушал Pink Floyd на виниле и басы были.  По версии 6 ток покоя около 100мА. Радиаторы около 800 см2 на канал. На выходе "сладкая парочка".  С ОРА134 ток покоя и температура стабильна, с КР574УД1 температура и ток покоя скакали. Осциллограф не подключал, но наверное это возбуд. После праздников посмотрю. Заказал ещё LM318N. Дальше буду слушать версию 6 на даче с Sony SS-2030, у них на мой взгляд середина хорошая. 
    • Опять же, "с батареей" а не только ионистором. Сталкивался с S7-200 в ремонте. Там тоже есть ионистор и нет батареи. Слета программы за пол года лежания не замечено, но ионистор не замерял..
    • Фото предоставленное вами выше говорит, что вы не понимаете того факта что энергию вашей "приблуды" потребляет не только микроконтроллер но и некоторые другие элементы на платке.
    • Существует и третий вариант - и карта, и батарейка, и ионистор.  Объясняется очень просто: батарейка на одной плате, а SRAM с рабочей программы на другой, на ней и стоит ионистор. Ионистор нужен в ремонтных целях - чтобы при разборе ПЛК не обнулилась память SRAM.  Попутно решается задача замены батарейки - не нужно это делать при включенном питании ПЛК. Гарантируется хранение в несколько часов, что для ремонта обычно достаточно. На практике же встретился станок, который везли по ж\д с вконец конченной батарейкой, и тем не менее рабочая программа в SRAM осталась жива. 
    • Логично предположить, что с таймером все в порядке. А вот согнал DONE стоит проверить, возможно где то в программе он ломается при работе с датчиком.
×
×
  • Создать...