在编写本机 c++ 代码时,我看到相同的程序在 xcode(iOS) 中运行良好,但在 eclipse(android) 中崩溃。我可以找到问题代码,这是由于内存访问错误。我想知道为什么 xcode(iOS) 没有遇到同样的错误访问因此崩溃。
实际上我创建了一个类说“class_A”,它继承了其他类说class_B。稍后在代码中,我创建了相同的类实例指针并分配了函数 foo() 的返回对象(属于 class_B),该对象返回超类类型的对象,即 class_B。
代码片段...
class class_A : public class_B
{
public:
};
class_A *tempPart = (class_A *)class_A::foo("abc.png");
if(tempPart)
{
-------------------
--------------------
}
现在,在访问 _tempPart 时,程序在 android (eclipse) 上崩溃,但是 xcode(iOS) 总是可以正常工作。我可以弄清楚,因为 fn foo() 返回了 class_B 类型的对象,因此我将一个超类(较小的对象)class_B 的对象分配给了继承的类(一个较大的对象)Class_A 的对象,因此它导致了错误的内存访问。
但我不明白为什么在 xcode(iOS) 上没有看到同样的问题。我是 xcode 和 c++ 的新手,所以请帮助我理解这一点。