Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Проблемы с С++ Iar for ARM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
Andryha
Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается, мол каких то ключей не хватает для HEAP. посмотрел Хелп про это дело но ниче не могу понять, что за HEAP и с чем его едят, и где прописывают эти самые ключи... поможите плиз:-)
Спасибо!
Calculator
Цитата(Andryha @ Jun 19 2007, 08:17) *
Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается, мол каких то ключей не хватает для HEAP. посмотрел Хелп про это дело но ниче не могу понять, что за HEAP и с чем его едят, и где прописывают эти самые ключи... поможите плиз:-)
Спасибо!

Куча - память для динамического выделения. В C++ без нее никуда
Менять размер - xcl-файле, там должен быть комментарий типа "Stack and heap segments"
Andy Mozzhevilov
Цитата(Calculator @ Jun 19 2007, 09:19) *
Куча - память для динамического выделения. В C++ без нее никуда

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



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


Код покажите
Andryha
Цитата(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;
он кушает причмокивая.
Andy Mozzhevilov
Цитата(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 - решать вам. Мне ни разу пока
не понадобилось.
Andryha
Спасибо, попробую.. главное знать где рыть, а нарыть то всегда можно:-)
jorikdima
Вы явно к микроконтроллерному программированию из ПК пришли smile.gif
Andryha
Цитата(jorikdima @ Jun 20 2007, 15:17) *
Вы явно к микроконтроллерному программированию из ПК пришли smile.gif

:-) не, я вообще пытаюсь Си++ освоить, можно сказать с нуля, даж без изучения си... писал раньше на асме.. надоело:-)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.