我在尝试使用 initstate_r 时遇到崩溃:
(gdb) run
Starting program: /home/user/test.out
Program received signal SIGSEGV, Segmentation fault.
0x40052d00 in initstate_r () from /lib/libc.so.6
代码:
#include <stddef.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define STATELEN 256 /* random number state buffer */
main()
{
char randomStateBuffer[STATELEN];
struct random_data randData;
printf("Before initstate");
/* seed the random number generator */
initstate_r (time(NULL), (char *)&randomStateBuffer, STATELEN,
(struct random_data *)&randData);
printf("initstate done");
}
我已经尝试在 gcc 3.3.6 和 4.3.3 中编译它,但都发生了崩溃。
最佳答案
在调用 initstate_r() 之前尝试将 randData 结构清零。
memset( &randData, 0, sizeof( random_data ) );
(从这个页面得到提示:http://sourceware.org/bugzilla/show_bug.cgi?id=3662)
关于C: initstate_r 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4167034/