0

次のサンプル コードは問題ないように見えますが、GCC 4.0.2 でコンパイルすると SIGBUS エラーで常に Solaris での実行に失敗しますが、GCC 3.4.2 バージョンでコンパイルすると正常に動作します。何か考えはありますか?

        //params is a pointer to a structure Param, which has a member d whose type is double. It was initiated/allocated through JNI.

        params->d = 5.0;
        double *b = &params->d;
        double c = params->d;
        c += *b;

最後の行で SIGBUS が発生しました。つまり、ポインターの逆参照とコンテンツへのアクセスが問題を引き起こしています。

ありがとう、チャールズ

4

1 に答える 1

0

それは私にはアライメントの問題のように聞こえます。IIRC はdouble64 ビットに揃える必要があります。

于 2011-07-21T18:15:52.923 に答える