我atomic_inc_64_nv
在 64 位 Solaris 上使用,返回值被强制转换为无符号长。但是当我运行我的应用程序时,它崩溃了,核心声称崩溃的原因是 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)
}
提前谢谢你。