我在C ++代码中出现运行时崩溃,仅当在Solaris机器SunOS 5.10 Generic_150400-27上执行并且使用Sun C 5.12编译器和C ++ 09标准时,才可以重现。 Windows或Linux上未复制它。一名开发人员确定问题可能是由于某个方法的hxx和cxx文件之间的签名不匹配所致。匹配方法签名后创建了一个测试.so,崩溃消失了。
hxx中的声明为:
string getAttributeList(void) const;
cxx中的实现是:
string getAttributeList() const
{
}
请注意,cxx文件中没有 void 。据说这导致了崩溃。后来,当签名匹配时,通过从声明中删除 void ,崩溃消失了。
我不认为这是崩溃的原因,因为这应该是编译时错误。但是,由于它正确构建且没有任何错误,因此这种签名不匹配会导致C ++运行时崩溃吗?