Код
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...
Начёт HEAP... Думал тоже, но, как я сказал, malloc() работает. Тоже использует. Грешу чисто на системные библиотеки, даже триальный IAR-5 скачал, не помогло... Дур дом какой-то!
Динамическая память нужна везде - если ЖК графический вкинуть, то меню рисовать без объектов очень тоскливо. Кассовые тоже нужны людям, чтоб пользоваться, и когда он достаточно сложен, как у меня, то лучше все-же через меню работать, а не кодами, как по старинке принято.