|
|
  |
Проблемы с С++ Iar for ARM, что такое HEAP |
|
|
|
Jun 19 2007, 02:17
|
Участник

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

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

Группа: Свой
Сообщений: 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
|
|
|
|
|
Jun 19 2007, 03:44
|

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

|
Цитата(Calculator @ Jun 19 2007, 09:19)  Куча - память для динамического выделения. В C++ без нее никуда Да ну ерунда, чего никуда-то? особенно в embedded? Цитата(Andryha @ Jun 19 2007, 08:17)  Здравствуйте, уважаемые участники форума, простите новичка за, может быть, глупый вопрос.. но я не могу понять... создал в ИАРЕ класс, выделил под него место, а иар не компилир, ругается, Код покажите
--------------------
Пасу котов...
|
|
|
|
|
Jun 19 2007, 12:50
|
Участник

Группа: Участник
Сообщений: 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; он кушает причмокивая.
|
|
|
|
|
Jun 19 2007, 12:57
|

Знающий
   
Группа: Свой
Сообщений: 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 - решать вам. Мне ни разу пока не понадобилось.
--------------------
Пасу котов...
|
|
|
|
|
Jun 19 2007, 13:17
|
Участник

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

|
Спасибо, попробую.. главное знать где рыть, а нарыть то всегда можно:-)
Сообщение отредактировал Andryha - Jun 19 2007, 13:19
|
|
|
|
|
Jun 28 2007, 02:46
|
Участник

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

|
Цитата(jorikdima @ Jun 20 2007, 15:17)  Вы явно к микроконтроллерному программированию из ПК пришли  :-) не, я вообще пытаюсь Си++ освоить, можно сказать с нуля, даж без изучения си... писал раньше на асме.. надоело:-)
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|