调用对象指针的虚函数引起的段错误
我想为基于 MIPS
的嵌入式设备
开发一个应用程序。我正在使用 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()
行执行后,我在屏幕上看到segment failure
消息。我认为操作系统、编译器或库之一可能已损坏。我不知道如何找到问题所在。
怎么了?
I want develop an application for a MIPS
based embedded device
. I am using mipsel-elf-g++
cross compiler. I implement a simple code as bellow.
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()
and b1.getValue()
lines works successfully, but when each of a2->getValue()
or b2->getValue()
lines executed, I see segment fault
message on the screen. I think one of the OS, compiler or library maybe are broken. I don't know how I can find the problem.
what is wrong?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你有:
并且你正在分配:
它应该是:
You have:
and you are assigning:
It should be: