私はatomic_inc_64_nv
64 ビット Solaris で使用しています。戻り値は unsigned long にキャストされます。しかし、アプリを実行するとクラッシュし、コアはクラッシュの原因が SIGBUS であると主張しています。アライメントの問題がある可能性があると思います。この問題を解決するにはどうすればよいですか?
これがインクリメントを使用する私の関数です
inline unsigned long long Increment64(volatile unsigned long long * pullTarget)
{
#if defined(LINUX)
return Add64(pullTarget, 1ULL);
#elif defined(SOLARIS)
return atomic_inc_64_nv((volatile unsigned long *)pullTarget) - 1ULL;
#elif defined(WIN32)
return (unsigned long long)InterlockedIncrement64((LONGLONG volatile*)(pullTarget)) - 1ULL;
#endif // defined(LINUX)
}
よろしくお願いします。