调用对象指针的虚函数引起的段错误

时间:2012-01-30 09:59:14

标签: c++ embedded segmentation-fault virtual mips

我想为基于MIPS的{​​{1}}开发一个应用程序。我正在使用embedded device交叉编译器。我实现了一个简单的代码。

mipsel-elf-g++

class A { public: virtual int getValue(); } class B : public A { public: virtual int getValue(); } int A::getValue() { return 1; } int B::getValue() { return 2; } int main() { A a1; B b1; A* a2 = &a1; B* b2 = &b1; int a_val_1 = a1.getValue(); int b_val_1 = b1.getValue(); int a_val_2 = a2->getValue(); int b_val_2 = b2->getValue(); return 0; } a1.getValue()行成功运行,但当每个b1.getValue()a2->getValue()行执行时,我会在屏幕上看到b2->getValue()消息。我认为其中一个操作系统,编译器或库可能已经坏了。我不知道怎么能找到问题。

出了什么问题?

1 个答案:

答案 0 :(得分:2)

你有:

B b1;

你正在分配:

B* b2 = &b2;

应该是:

B* b2 = &b1;