c - GCC 4.0.2 取消引用指向结构的双类型成员的指针会引发 SIGBUS 错误

标签 c gcc struct java-native-interface sigbus

以下示例代码对我来说看起来不错,但如果使用 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 在最后一行提出,即取消引用指针并访问内容导致了问题。

谢谢, 查尔斯

最佳答案

对我来说,这听起来像是一个对齐问题。 IIRC,double 必须对齐到 64 位。

关于c - GCC 4.0.2 取消引用指向结构的双类型成员的指针会引发 SIGBUS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780390/

相关文章:

c - 如何将动态分配的结构和 double 子结构的内容传输到数组? (C)

c - 将结构传递给函数并添加元素

c - 访问结构数组中的值

c - fprintf 不能在 wireshark 源中工作

c - 在 C 程序中使用 0 而不是 '\0'

c++ - 模板函数错误

Python:Python.h 文件丢失

c++ - 使用 C 库的面向对象应用程序的方法

使用 Netbeans 的 C 程序中的命令行参数

c - 如何在 OS X 上使用 --pedantic-errors 进行编译?