Код
class SomeBase
{
public:
virtual void foo (void) = 0;
}
class SomeDelivered : public SomeBase
{
public:
void foo (void)
{
printf("hello!\r\n");
}
}
{
public:
virtual void foo (void) = 0;
}
class SomeDelivered : public SomeBase
{
public:
void foo (void)
{
printf("hello!\r\n");
}
}
Далее внутри main'a делаю следующее:
Код
SomeDelivered a; /**<<<< Объект объявлен ГЛОБАЛЬНО */
int main (void)
{
...
SomeBase *p;
p = &a;
p->foo();
...
}
int main (void)
{
...
SomeBase *p;
p = &a;
p->foo();
...
}
Программа выпадает в HardFault сразу после вызова p->foo().
А если я делаю так:
Код
int main (void)
{
...
SomeDelivered a; /**<<<< Объект объявлен ЛОКАЛЬНО */
SomeBase *p;
p = &a;
p->foo();
...
}
{
...
SomeDelivered a; /**<<<< Объект объявлен ЛОКАЛЬНО */
SomeBase *p;
p = &a;
p->foo();
...
}
то все работает.
В чем дело, помогите пожалуйста?! В keil такая штука работает без проблем и так и так.