我不知所措。这个琐碎的代码给了我Segfault,可能是什么错误?
struct random_data *qq; qq = calloc(50, sizeof(struct random_data)); srandom_r(time(NULL), qq);
现在,如果我这样更改它,它将起作用:
struct random_data qq; srandom_r(time(NULL), &qq);
我一定是个笨蛋,但我不明白。请帮助。
更新:calloc返回有效的指针
(uint64_t) 1aa5010
但是,&qq代表指针
(uint64_t) 7fffbb428090
这就是区别,但是还不清楚为什么srandom_r无法执行。我尝试在Linux 2.6.32-44-服务器#98-Ubuntu
我不知所措。这个琐碎的代码给了我Segfault,可能是什么错误? struct random_data * qq; qq = calloc(50,sizeof(struct random_data)); srandom_r(time(NULL),qq);现在,如果我...
似乎大多数答案从未真正尝试运行您的代码。这是一个非常简约的程序,确实显示了您的问题:
[您可能希望添加一个测试,calloc()
是否成功,因为最可能通过NULL
会引起细分违规。
'random_data'不包含保存随机数生成器状态的内存-它保存该状态所处的状态。...