реклама на сайте
подробности

 
 
> Опять нехватает памяти под массив)
Xenom0rph
сообщение Oct 12 2008, 09:22
Сообщение #1


Частый гость
**

Группа: Новичок
Сообщений: 85
Регистрация: 2-10-08
Пользователь №: 40 646



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, но как там с скоростью записи байта, читал что медленная она очень?

Все разобрался, просто объявил как глобальную переменную ))
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
sergeeff
сообщение Oct 12 2008, 18:18
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 481
Регистрация: 10-04-05
Пользователь №: 4 007



А при чем здесь Code Vision? Стандарт С определяет, что локальные переменные размещаются в стеке, а описанные как static или глобальные - в сегменте данных. Если массив в данной задаче нужен только на время вызова функции, то лучше озаботится выяснением, сколько выделено места под стек и, по возможности, увеличить его.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Oct 12 2008, 18:35
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(sergeeff @ Oct 12 2008, 22:18) *
Стандарт С определяет, что локальные переменные размещаются в стеке, а описанные как static или глобальные - в сегменте данных.

В стандарте C ничего подобного нет. Память может выделяться на стеке, но отнюдь не обязательно.
Go to the top of the page
 
+Quote Post
zltigo
сообщение Oct 12 2008, 19:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(aaarrr @ Oct 12 2008, 20:35) *
В стандарте C ничего подобного нет.

Ну слов stack, действительно нет, ибо это уже архитектурные особенности, однако всякие варианты storage описаны более, чем подробно и на машинах со стековой архитектурой локальные хранятся, естественно, в стеке. Причем, storage duration их должно по любому обеспечиваться правильно, иначе, например, рекурсивные вызовы функции идут лесом...


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 12:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01311 секунд с 7
ELECTRONIX ©2004-2016