c语言 - int x = time(NULL);=> 赛格特?



我所看到的一切都说明了我是如何获得一个合理的参数种子的。

int seed = time(NULL);

segfault。也是

time_t seed = time(NULL);
int seed = (int)time(NULL);

等等。等

有什么想法吗?

唯一能立刻想到的是,有人将NULL重新定义为非零。如果您传递一个非null指针,它将尝试写入该内存,这可能会导致segfault。

快速检查是尝试time(0)

失败的话,它可能是由其他地方的损坏引起的,在这种情况下,最好的办法是用调试器单步执行。

还要确保包含了正确的标题。在整数(遵循早期标准的编译器中参数的默认值)与指针大小不同的系统中,可能会导致堆栈错位。我在一些64位系统上看到过这种影响。

适用于我:

#include <time.h>
int main()
{
    time_t seed = time(NULL);
    return 0;
}
// gcc x.c && ./a.out
// echo $?
// > 0

相关内容

  • 没有找到相关文章

最新更新