Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Опять нехватает памяти под массив)
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
Xenom0rph
Cуть в чем, значит я декодировал данные, и мне нужно их записать в строку, всего то 30 символов.
Хочу сделать массив на 30 символов, типа char.
вот строка
char mas[30].
А дальше записываю декодированный символ по номеру массива.
На что Code Vision говорит, мол:
The estimated Data Stack usage of 45 bytes()s ...
ну и вот в моей тиньке этот Data Stack всего 32 байта. Так установил Code Vision в настройках.
Есть ещё какая то Hardware Stack 96 bytes.
Как я понял из даташита это и есть 128 внутренней памяти.
Так вот как мне обратится к этим 96 байтам?
Пробовал
flash char mas[30] та же картина, только в профиль.
Раскажите plz как это все работаети и как можно выйти из данного положения. Была идея записи в eeprom, но как там с скоростью записи байта, читал что медленная она очень?

Все разобрался, просто объявил как глобальную переменную ))
MrYuran
а если порпобовать static char mas[]?
тогда на стек он попасть не должен
Xenom0rph
Цитата(MrYuran @ Oct 12 2008, 13:26) *
а если порпобовать static char mas[]?
тогда на стек он попасть не должен

Попробую, ради эксперемента, а так и глобально если объявить, тоже отлично работает!

да! тоже работает, спасибо незнал раньше об этом!
garbuz
Цитата(Xenom0rph @ Oct 12 2008, 12:22) *
Так установил Code Vision в настройках.

Дак измените в свойствах проекта.
sergeeff
А при чем здесь Code Vision? Стандарт С определяет, что локальные переменные размещаются в стеке, а описанные как static или глобальные - в сегменте данных. Если массив в данной задаче нужен только на время вызова функции, то лучше озаботится выяснением, сколько выделено места под стек и, по возможности, увеличить его.
aaarrr
Цитата(sergeeff @ Oct 12 2008, 22:18) *
Стандарт С определяет, что локальные переменные размещаются в стеке, а описанные как static или глобальные - в сегменте данных.

В стандарте C ничего подобного нет. Память может выделяться на стеке, но отнюдь не обязательно.
zltigo
Цитата(aaarrr @ Oct 12 2008, 20:35) *
В стандарте C ничего подобного нет.

Ну слов stack, действительно нет, ибо это уже архитектурные особенности, однако всякие варианты storage описаны более, чем подробно и на машинах со стековой архитектурой локальные хранятся, естественно, в стеке. Причем, storage duration их должно по любому обеспечиваться правильно, иначе, например, рекурсивные вызовы функции идут лесом...
singlskv
Цитата(aaarrr @ Oct 12 2008, 22:35) *
В стандарте C ничего подобного нет. Память может выделяться на стеке, но отнюдь не обязательно.
Читать "стэк" как временная память...(может и в регистрах)
То есть по сути все равно стек... хотя возможно и программный...(на уровне компилятора)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.