Приветствую котоединомышленников!
При запуске дебага простой прошивки (просто для проверки) на С++ для stm32f405, stm32F103 в CubeIde вываливаюсь в HardFault при достижении обращения программы к виртуальному методу:
Код:
#ifndef TEST103_HPP_
#define TEST103_HPP_
#include "gpio.h"
#include "main.h"
class PtrFoo {
public:
virtual void fooVirt(){};
};
class FooSecond: public PtrFoo {
public:
void fooVirt() override {
int a = 2 + 3;
}
};
class FooTherd: public PtrFoo {
public:
void fooVirt() override {
int b = 5 + 4;
}
};
class PtrFoo;
class ComCom {
public:
PtrFoo* arrPtrFoo[2] ;
ComCom(){
FooSecond FS;
FooTherd FT;
arrPtrFoo[0] = &FS;
arrPtrFoo[1] = &FT;
}
void fooVirt(int y) {
arrPtrFoo[y]->fooVirt();//На следующем шаге уходит в HardFault
}
};
#endif /* TEST103_HPP_ */
В main.cpp перед while:
Код:
ComCom comCom;
comCom. fooVirt(0);
Долгое время пытался найти решение проблемы в сети, но безрезультатно. Тот же эффект наблюдается при работе в IARe. Давно пишу на С для stm32, на С++ перешел совсем недавно.
При отладке в Visual Studio все работает корректно. Куда копать? Спасибо.