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

 
 
> расположить массив в памяти (Си)
Метценгерштейн
сообщение Aug 20 2014, 11:10
Сообщение #1


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

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



есть большой массив- миллион значений uint32_t
при его объявлении выскакивает ошибка. Вероятно, массивы на стеке выделяются?
Где про это почитать? Как правильно объявлять такие большие массивы?

миллион- может и много, но даже 10000 не хочет объявляться.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
DASM
сообщение Aug 20 2014, 14:57
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 644
Регистрация: 28-05-05
Пользователь №: 5 493



То есть никаких ошибок линкера, на плате реально более 4 мегабайт памяти стоит ???? В ИАРе вроде используется .icf файлы (project-ooptions-linker-linker configuration file) - что в нем ? А если в General options на вкладке Stack-Heap поставите Heap такого большого размера и выделите память через malloc - что увидите ?

Насчет выделения.
void Foo()
{
char ar[10000]; // это на стеке
}
///////////////

char ar[10000]; // это глобально (или локально для файла с кваоификатором static) в сегмент .bss пойдет (в разных линкерах может называться иначе)
//code
///////////////
char *pAr = (char*) malloc (10000); // это в HEAP ляжет, по окончании использования делаем free (pAr);
Ну локальный массив на стеке в 40000 байт однозначно все отвалит и ляжем в hard fault, компилятор такое не проверяет. А вот глобальный массив он должен проверить на допустимость размера и линкер должен дать ошибку - мало памяти. Правда отвалится все если на стеке только если эта функция уже вызывалась... Мутно Вы как-то проблему описываете. Мне для начала интересно как к Ф4 столько памяти прицепить реальной..
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   расположить массив в памяти (Си)   Aug 20 2014, 11:10
- - msalov   Такие объёмы памяти на стеке не выделяются. Если э...   Aug 20 2014, 12:14
- - toweroff   Цитата(Метценгерштейн @ Aug 20 2014, 15:1...   Aug 20 2014, 13:11
|- - DASM   Цитата(toweroff @ Aug 20 2014, 17:11) Сам...   Aug 20 2014, 13:20
- - Метценгерштейн   немного не уточнил. Проект под STM32F4 IAR. компил...   Aug 20 2014, 14:42
- - Метценгерштейн   про 4 гига я уже потом подумал Но оно и в 1000 з...   Aug 20 2014, 16:52
|- - fatlortroll   Массив с изменяемыми данными, или с константами? Н...   Aug 21 2014, 12:01
- - Метценгерштейн   массив заполняется результатом измерений- т.е. не ...   Aug 21 2014, 18:51
- - fatlortroll   А в прошивке используется выделение памяти на куче...   Aug 22 2014, 06:04
- - Метценгерштейн   опять наступаю на подобные грабли. принимаю данные...   Aug 28 2014, 17:20
|- - Lagman   Цитата(Метценгерштейн @ Aug 28 2014, 21:2...   Aug 29 2014, 19:46
- - Dejmos   А какой размер CSTACK в настройках стоит?   Aug 28 2014, 23:23
- - Метценгерштейн   вроде вот- по умолчанию http://c2n.me/iOOyiX толь...   Aug 29 2014, 09:44
- - Dejmos   Ну есть предположение что размера CSTACK не хватае...   Aug 29 2014, 16:26
- - Метценгерштейн   0х2000- это 8 кб памяти. Вопрос в другом- как лови...   Aug 29 2014, 17:21
- - Dejmos   Массив не на стеке, но стек может переполниться че...   Aug 29 2014, 18:18
- - Метценгерштейн   передаю массив в ф-ю. т.е. адрес его. проверил и с...   Aug 29 2014, 21:34
- - Метценгерштейн   пересобрал проект в Кейл- эффект такой же. Т.е., с...   Aug 30 2014, 18:36
- - gerber   Цитата(Метценгерштейн @ Aug 30 2014, 22:3...   Aug 31 2014, 11:00


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

 


RSS Текстовая версия Сейчас: 23rd August 2025 - 14:31
Рейтинг@Mail.ru


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