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

 
 
> Проблема с stl в iar
juvf
сообщение May 12 2010, 11:54
Сообщение #1


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Использую компилятор icc430 для msp430. пробую стандартные шаблоны. если объявлении
Цитата
list<int> myIntList;
myIntList.push_back(43); //этот вызов работает
list<myClass> myClassList;
myClass obj;
list.push_back(obj); //в этом месте программа сваливается.

вообще при попытке вставить в контейнер list или map программа сваливается. Кто нибудь использовал стандартные шаблоны в иаре? Они в иаре рабочие? Может нужно какую нибудь опцию компилятору передать, чтоб list заработал?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
juvf
сообщение May 12 2010, 16:05
Сообщение #2


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

Группа: Свой
Сообщений: 1 261
Регистрация: 14-05-09
Из: Челябинск
Пользователь №: 49 045



Цитата(sergeeff @ May 12 2010, 21:18) *
А должно быть:

Код
list<int> myIntList;
myIntList.push_back(43); //этот вызов работает
list<myClass> myClassList;
myClass obj;
myClassList.push_back(obj);

опечатался. тот бы код компилятор не пропустил. вообщем на myClassList.push_back(obj); программа сваливается.
Go to the top of the page
 
+Quote Post
dxp
сообщение May 13 2010, 04:21
Сообщение #3


Adept
******

Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343



Цитата(juvf @ May 12 2010, 23:05) *
опечатался. тот бы код компилятор не пропустил. вообщем на myClassList.push_back(obj); программа сваливается.

STL требует работы с памятью, каждый контейнер имеет стандартный аллокатор, который обращается к менеджеру памяти с целью выделения оной под размещение объектов. Поэтому нужно проследить, что менеджер памяти имеет достаточно ресурсов для своей работы - размещена "куча" (Heap) достаточного размера. По умолчанию там у нее размер какой-то смешной - что-то порядка 16 байт. Этого хватает для одного обращения, а на втором уже облом.

Вообще, стандартный менеджер памяти не очень хорошо подходит под embedded - слишком он универсальный, требовательный к ресурсам (память и быстродействие) и подвержен фрагментации. Поэтому в embedded часто вместо стандартного используют более специализированные под конкретные задачи, не редко самописные. В случае с STL ситуация усугубляется еще тем, что при использовании нестандартного менеджера памяти придется писать и свои аллокаторы для контейнеров, а это требует довольно глубоких познаний внутренностей как самой STL, так и всего этого шаблонного механизма С++. Это не так просто.

В общем, я бы советовал подумать два раза, прежде чем браться за STL на MSP430 - немного не тот процессор, чтобы с ходу эффективно это на нем использовать. Не лишне будет рассмотреть альтернативные варианты реализации желаемой функциональности.


--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
Go to the top of the page
 
+Quote Post



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

 


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


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