我看到的一切都是这样说的,我如何得到一个合理的参数种子随机数。int x = time(NULL); => SEGFAULT?
int seed = time(NULL);
segfaults。所以确实
time_t seed = time(NULL);
int seed = (int)time(NULL);
等等,等等
有什么想法?
我看到的一切都是这样说的,我如何得到一个合理的参数种子随机数。int x = time(NULL); => SEGFAULT?
int seed = time(NULL);
segfaults。所以确实
time_t seed = time(NULL);
int seed = (int)time(NULL);
等等,等等
有什么想法?
工作对我来说:
#include <time.h>
int main()
{
time_t seed = time(NULL);
return 0;
}
// gcc x.c && ./a.out
// echo $?
// > 0
立即弹簧想到的唯一的事情是,有人已经重新定义NULL
是非零。如果传递一个非空指针,它将尝试写入该内存,这可能会导致段错误。
快速检查是尝试time(0)
来代替。
如果失败,那可能是其他地方的腐败造成的,在这种情况下,最好的办法就是用调试器单步调试。
还要确保你已经包含正确的标题。在一个整数(在先前的标准之后的编译器中的参数的默认值)与指针的大小不同的系统中,可能会导致堆栈未对齐。我在某些64位系统上看到了这种效果。
时间(0) - >成功。看起来NULL不知何故不起作用。我几乎肯定我自己没有重新定义它。有什么你知道的吗?我只使用常见的头:#包括
我使用的是32位系统 – Lucas 2012-08-03 14:22:16
没有_should_触摸NULL,它会打破很多代码。如果你的编译器支持像'gcc -E'这样的预处理器输出(来自内存),你可以检查它。 – paxdiablo 2012-08-03 14:24:29
问题出在别的地方,其中一部分代码你没有显示,我相信。 – Mahesh 2012-08-03 14:06:57
您的系统可以在那个时间(time_t * dest)有dest * mandatory *吗?尝试时间(&种子),看看它是否有效,请 – Senna 2012-08-03 14:07:38
通过'gdb'运行这个,看*哪里*它segfaults。 – MvG 2012-08-03 14:09:12