0

下面的示例代码对我来说看起来不错,但如果使用 GCC 4.0.2 编译,在 Solaris 上执行总是失败并出现 SIGBUS 错误,但是如果使用 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,double必须对齐到 64 位。

于 2011-07-21T18:15:52.923 回答