Указатель разыменования GCC 4.0.2 на элемент двойного типа вызывает ошибку SIGBUS - PullRequest
0 голосов
/ 21 июля 2011

Следующий пример кода выглядит нормально для меня, но всегда не выполняется на Solaris с ошибкой SIGBUS при компиляции с GCC 4.0.2, однако работает нормально при компиляции с версией 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 был поднят в последней строке, то есть разыменование указателя и доступ к содержимому вызывает проблему.

Спасибо, Чарльз

1 Ответ

0 голосов
/ 21 июля 2011

Это звучит как проблема выравнивания для меня. IIRC, double должен быть выровнен по 64 битам.

...