我的本应该是确定性程序在不同运行时会产生几个略有不同的输出。输入、编译器和计算机都没有改变。我不确定哪个输出是正确的,因为它们总是看起来合理。
除了偶然调用rand()函数之外,还可能出现什么问题呢?
我的本应该是确定性程序在不同运行时会产生几个略有不同的输出。输入、编译器和计算机都没有改变。我不确定哪个输出是正确的,因为它们总是看起来合理。
除了偶然调用rand()函数之外,还可能出现什么问题呢?
如果您的输出依赖于在堆上分配的地址:
int main(int argc, char* argv[])
{
printf("%p", malloc(42));
return 0;
}
对于每次运行,malloc() 函数可能会返回不同的虚拟地址-更不用说在分配失败时返回NULL了。
可能是以下情况:
除了偶然调用rand()函数之外,
rand()
函数只要输入相同的初始种子值,就完全是确定性的。
如果没有看到一些代码(提示:代码),我能想到的最好的方法就是寻找模式。也许是与日期时间有关的模式。
此外,尝试查找竞态条件。这可能看起来不确定。
使用指针的值而不是它所指向的内容总是会产生有趣的结果。