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

 
 
 
Reply to this topicStart new topic
> Проблемы с С++ Iar for ARM, что такое HEAP
Andryha
сообщение Jun 19 2007, 02:17
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается, мол каких то ключей не хватает для HEAP. посмотрел Хелп про это дело но ниче не могу понять, что за HEAP и с чем его едят, и где прописывают эти самые ключи... поможите плиз:-)
Спасибо!
Go to the top of the page
 
+Quote Post
Calculator
сообщение Jun 19 2007, 03:19
Сообщение #2


Участник
*

Группа: Свой
Сообщений: 45
Регистрация: 19-04-07
Пользователь №: 27 172



Цитата(Andryha @ Jun 19 2007, 08:17) *
Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается, мол каких то ключей не хватает для HEAP. посмотрел Хелп про это дело но ниче не могу понять, что за HEAP и с чем его едят, и где прописывают эти самые ключи... поможите плиз:-)
Спасибо!

Куча - память для динамического выделения. В C++ без нее никуда
Менять размер - xcl-файле, там должен быть комментарий типа "Stack and heap segments"

Сообщение отредактировал Calculator - Jun 19 2007, 03:22
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Jun 19 2007, 03:44
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Calculator @ Jun 19 2007, 09:19) *
Куча - память для динамического выделения. В C++ без нее никуда

Да ну ерунда, чего никуда-то? особенно в embedded?



Цитата(Andryha @ Jun 19 2007, 08:17) *
Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается,


Код покажите


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Andryha
сообщение Jun 19 2007, 12:50
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



Цитата(Andy Mozzhevilov @ Jun 19 2007, 10:44) *
Код покажите

кодик достаточно простой, просто не удалось его нарастить, т.к. столкнулся с проблемой
создал клас:
class read_fat_16
{
private:
char f_syst; // должен храниться код файловой системы
public:
read_fat_16 ()
{
initSD ();//инициализация карточки
}
};

Далее пытаюсь выделить под него место:
read_fat_16 *read = new read_fat_16;
тут он начинает ругаться, мол:
Fatal Error[e72]: Segment HEAP must be defined in a segment definition option (-Z, -b or -P)

но, когда я просто пишу
read_fat_16 read;
он кушает причмокивая.
Go to the top of the page
 
+Quote Post
Andy Mozzhevilov
сообщение Jun 19 2007, 12:57
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 877
Регистрация: 26-01-05
Из: Екатеринбург
Пользователь №: 2 206



Цитата(Andryha @ Jun 19 2007, 18:50) *
Далее пытаюсь выделить под него место:
read_fat_16 *read = new read_fat_16;
тут он начинает ругаться, мол:
Fatal Error[e72]: Segment HEAP must be defined in a segment definition option (-Z, -b or -P)

но, когда я просто пишу
read_fat_16 read;
он кушает причмокивая.


Когда вы работать через new, в динамической памяти выделяется область
для размещения объекта, и вам возвращается указатель на него.
Для того, чтобы это работало, нужно иметь динамическую память (HEAP).
Ее то у вас и нет. Нужно почитать доку на компилятор, как ее завести.
Когда вы делаете:
read_fat_16 read;
то компилятор размещает объект в статической памяти, на этапе компиляции,
или в стеке, если вы объявляете его внутри функции.
Надо ли вам именно динамическое размещение через new - решать вам. Мне ни разу пока
не понадобилось.


--------------------
Пасу котов...
Go to the top of the page
 
+Quote Post
Andryha
сообщение Jun 19 2007, 13:17
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



Спасибо, попробую.. главное знать где рыть, а нарыть то всегда можно:-)

Сообщение отредактировал Andryha - Jun 19 2007, 13:19
Go to the top of the page
 
+Quote Post
jorikdima
сообщение Jun 20 2007, 08:17
Сообщение #7


тут может быть ваша реклама
*****

Группа: Свой
Сообщений: 1 164
Регистрация: 15-03-06
Из: Санкт-Петербург/CA
Пользователь №: 15 280



Вы явно к микроконтроллерному программированию из ПК пришли smile.gif
Go to the top of the page
 
+Quote Post
Andryha
сообщение Jun 28 2007, 02:46
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 34
Регистрация: 6-04-07
Пользователь №: 26 805



Цитата(jorikdima @ Jun 20 2007, 15:17) *
Вы явно к микроконтроллерному программированию из ПК пришли smile.gif

:-) не, я вообще пытаюсь Си++ освоить, можно сказать с нуля, даж без изучения си... писал раньше на асме.. надоело:-)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 20th June 2025 - 22:31
Рейтинг@Mail.ru


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