为什么这段代码在Objective-C中有效?我得到了BAD_ACCESS

时间:2012-08-20 06:13:39

标签: objective-c c

int RandomSource_next(int bits, double* seed) {
    *seed = (((long long) *seed * 0x5DEECE66DLL) + 0xBLL) & ((1LL << 48) - 1);
    return (int)((signed long long) *seed >> (48 - bits));
}

我认为这与地址有关。

1 个答案:

答案 0 :(得分:2)

很可能您传递的地址错误为seed。也许你传递的不是地址而是价值?

以下内容应该有效

double seed = 0;

RandomSource_next(48, &seed);

以下内容应该崩溃

RandomSource_next(48, 0);