+ -
当前位置:首页 → 问答吧 → 一个奇怪的段错误SIG 11| Segment fault

一个奇怪的段错误SIG 11| Segment fault

时间:2011-12-19

来源:互联网

用OpenGLES2.0跑GLBenchmark2.0的时候,出现了Segment fault.
经过分析后发现具体的情况是这样的:
首先在类TestBase定义了一些纯虚函数。(如init,animate函数)
在类LowLevelTest中继承了类TestBase,并实现了纯虚函数,init和animate。
在类RenderCheckTest类中继承了类LowLevelTest,并且也实现了函数init和animate。
代码中创建了一个RenderCheckTest类的对象frameBufferTest指针。 
RenderCheckTest *frameBufferTest = new GLB::RenderCheckTest();
Segment fault发生在紧接着的一句代码 frameBufferTest->init()
函数不会做任何调用,好像init这个函数指针就是非法的。
这里采用了命名空间的操作。 TestBase在默认的namespace里,LowLevelTest和RenderCheckTest在GLB命名空间中。

后来又进行了一些尝试:
1,使用frameBufferTest去调用一个功能相同但更改了函数名的pinit,函数可以调用(即调用自己的成员函数)。
2,将TestBase也定义在GLB的命名空间中,代码还是会在这里frameBufferTest->init()的地方出错。

我想这里可能涉及到了一些语法方面的细节,没有使用正确,或者是编译器出现了一些问题。

系统平台为linux。
请各位帮忙给予一些指引。

作者: joe_8086   发布时间: 2011-12-19

没有人回帖,但是这个问题还是希望能够有人给予一些方向上和思路上的指引。自己顶一下贴。

作者: joe_8086   发布时间: 2011-12-19