ネイティブのc++コードを書いているときに、同じプログラムがxcode(iOS)で正常に動作するのを確認しましたが、eclipse(android)ではクラッシュします。問題のあるコードを見つけることができましたが、それはメモリアクセスが悪いためでした。なぜxcode(iOS)が同じ悪いアクセスにヒットしなかったので、クラッシュしたのだろうか。
実際、私は「class_A」というクラスを作成しました。これは、class_Bという他のクラスを継承します。コードの後半で、同じクラスインスタンスポインタを作成し、スーパークラスタイプのオブジェクト、つまりclass_Bを返す関数foo()(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++を初めて使用するので、これを理解するのを手伝ってください。