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

 
 
> IAR 4.41A & C++
mungo
сообщение Sep 21 2007, 08:13
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Имеем простой классический код:
Код
class    TMenu    {
public:
TMenu();
~TMenu();
int    Show(int);
private:
char    menu[7][17];
int    x,width,len,ptr;
};

TMenu *m=new TMenu();
m->Show(1);
delete m;

Компилируется отлично, без ошибок. Пишем в камень (AT91SAM7XC256), радуемся красивому зависанию. До оператора new все работает, затем просто виснет проц. Объявление в статике все решает, но держать в памяти много объектов не очень здорово. Писать для каждого нового меню отдельную процедуру, чтобы держать все в стеке тоже не очень - тогда с классами нет необходимости возиться.
Думал, что там с heap проблема - никаких. malloc() работает.
help.gif


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
mungo
сообщение Sep 21 2007, 10:58
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 21-09-07
Из: СССР
Пользователь №: 30 719



Код
    693          void    xxx()
    694          {
   \                     ??xxx:
   \   00000000   10B5               PUSH     {R4,LR}
    695          TMenu    *m;
    696          m=new TMenu();
   \   00000002   8820               MOVS     R0,#+136
   \   00000004   ........           _BLF     `??operator new`,`??operator new??rT`
   \   00000008   0400               MOVS     R4,R0
   \   0000000A   02D0               BEQ      ??xxx_1
   \   0000000C   ........           _BLF     ??TMenu,??TMenu??rT
   \   00000010   00E0               B        ??xxx_2
   \                     ??xxx_1:
   \   00000012   0024               MOVS     R4,#+0
    697          m->Show(2);
   \                     ??xxx_2:
   \   00000014   0221               MOVS     R1,#+2
   \   00000016   2000               MOVS     R0,R4
   \   00000018   ........           _BLF     ??Show,??Show??rT
    698          delete m;
   \   0000001C   2000               MOVS     R0,R4
   \   0000001E   ........           _BLF     `??delete ~TMenu`,`??delete ~TMenu??rT`
    699          /*char *s;
    700          s=new char[10];
    701          delete [] s;*/
    702          }
   \   00000022   10BC               POP      {R4}
   \   00000024   01BC               POP      {R0}
   \   00000026   0047               BX       R0              ;; return

Возможно, кому-нибудь листинг скажет, что не так...
Как-то побороть невозможно. Куда уходит вызов - абсолютно непонятно. В конструкторе класса только одна инструкция (в листинге) - BX LR... 07.gif
Начёт HEAP... Думал тоже, но, как я сказал, malloc() работает. Тоже использует. Грешу чисто на системные библиотеки, даже триальный IAR-5 скачал, не помогло... Дур дом какой-то!
Динамическая память нужна везде - если ЖК графический вкинуть, то меню рисовать без объектов очень тоскливо. Кассовые тоже нужны людям, чтоб пользоваться, и когда он достаточно сложен, как у меня, то лучше все-же через меню работать, а не кодами, как по старинке принято.


--------------------
Сомневаюсь, и вам советую!
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- mungo   IAR 4.41A & C++   Sep 21 2007, 08:13
- - alexander55   Цитата(mungo @ Sep 21 2007, 12:13) TMenu ...   Sep 21 2007, 09:28
|- - mungo   Цитата(alexander55 @ Sep 21 2007, 12:28) ...   Sep 21 2007, 09:52
|- - jorikdima   Цитата(alexander55 @ Sep 21 2007, 13:28) ...   Sep 21 2007, 10:03
|- - mungo   Цитата(jorikdima @ Sep 21 2007, 13:03) Кр...   Sep 21 2007, 10:12
|- - zhevak   Цитата(mungo @ Sep 21 2007, 16:12) Да, пр...   Sep 21 2007, 10:37
|- - alexander55   Цитата(mungo @ Sep 21 2007, 14:12) Да, пр...   Sep 21 2007, 10:41
- - mungo   Код 693 void xxx() 694 { \ ...   Sep 21 2007, 10:58
- - deadman   А в конструкторе что?   Sep 21 2007, 11:13
|- - mungo   Цитата(deadman @ Sep 21 2007, 14:13) А в ...   Sep 21 2007, 11:18
|- - Alexey Bishletov   Видимо new и malloc все же различаются в части выд...   Sep 21 2007, 11:38
- - mungo   У меня тоже нету исходников. А пошагово зайти не м...   Sep 21 2007, 11:43
- - Alechek   Чтобы не стопорился, вызвать функцию до SysInit() ...   Sep 21 2007, 11:57
- - mungo   J-Link запустил с горем пополам. Короче нашел где ...   Sep 21 2007, 12:07
- - alexander55   Цитата(mungo @ Sep 21 2007, 16:07) J-Link...   Sep 21 2007, 12:28
- - mungo   Цитата(alexander55 @ Sep 21 2007, 15:28) ...   Sep 21 2007, 13:21
- - zhevak   Цитата(mungo @ Sep 21 2007, 19:21) Разобр...   Sep 24 2007, 04:35
|- - Alexey Bishletov   Цитата(zhevak @ Sep 24 2007, 08:35) Сказа...   Sep 24 2007, 06:12
|- - zltigo   Цитата(Alexey Bishletov @ Sep 24 2007, 09...   Sep 24 2007, 06:29
||- - alexander55   Я завелся (значит не прав), но проделал полезную р...   Sep 24 2007, 07:02
|- - zhevak   Цитата(Alexey Bishletov @ Sep 24 2007, 12...   Sep 24 2007, 06:34
|- - zltigo   Цитата(zhevak @ Sep 24 2007, 09:34) Добав...   Sep 24 2007, 07:06
||- - zhevak   Цитата(zltigo @ Sep 24 2007, 13:06) Тольк...   Sep 24 2007, 07:51
||- - alexander55   Цитата(zhevak @ Sep 24 2007, 11:51) я воо...   Sep 24 2007, 08:02
||- - zltigo   Цитата(zhevak @ Sep 24 2007, 10:51) Я тол...   Sep 24 2007, 08:04
|- - Сергей Борщ   Цитата(zhevak @ Sep 24 2007, 09:34) Я так...   Sep 24 2007, 07:14
|- - zhevak   Цитата(Сергей Борщ @ Sep 24 2007, 13:14) ...   Sep 24 2007, 08:30
|- - zltigo   Цитата(zhevak @ Sep 24 2007, 11:30) Да. Э...   Sep 24 2007, 08:41
|- - Сергей Борщ   Цитата(zhevak @ Sep 24 2007, 11:30) Да. Э...   Sep 24 2007, 10:34
|- - zltigo   Цитата(Сергей Борщ @ Sep 24 2007, 13:34) ...   Sep 24 2007, 10:41
- - alexander55   Цитата(mungo @ Sep 21 2007, 17:21) В како...   Sep 24 2007, 05:10


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

 


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


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