以下示例代码对我来说看起来不错,但如果使用 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 = ¶ms->d;
double c = params->d;
c += *b;
SIGBUS 在最后一行提出,即取消引用指针并访问内容导致了问题。
谢谢, 查尔斯
最佳答案
对我来说,这听起来像是一个对齐问题。 IIRC,double
必须对齐到 64 位。
关于c - GCC 4.0.2 取消引用指向结构的双类型成员的指针会引发 SIGBUS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6780390/