int x = time(NULL); =>段错误?

时间:2012-08-03 14:04:43

标签: c time segmentation-fault

我看到的一切都说明了如何通过随机数获得一个合理的参数种子。

int seed = time(NULL);

段错误。

也是如此
time_t seed = time(NULL);
int seed = (int)time(NULL);

等。等

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

唯一让人想到的是,有人将NULL重新定义为非零。如果传递非空指针,它将尝试写入该内存,这可能会导致段错误。

快速检查是尝试time(0)

失败,那可能是由于其他地方的腐败造成的,最好的办法就是用调试器单步执行它。

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

答案 1 :(得分:1)

适合我:

#include <time.h>

int main()
{
    time_t seed = time(NULL);
    return 0;
}

// gcc x.c && ./a.out
// echo $?
// > 0