int RandomSource_next(int bits, double* seed) {
*seed = (((long long) *seed * 0x5DEECE66DLL) + 0xBLL) & ((1LL << 48) - 1);
return (int)((signed long long) *seed >> (48 - bits));
}
我认为这与地址有关。
答案 0 :(得分:2)
很可能您传递的地址错误为seed
。也许你传递的不是地址而是价值?
以下内容应该有效
double seed = 0;
RandomSource_next(48, &seed);
以下内容应该崩溃
RandomSource_next(48, 0);