我需要一个介于0.0和1.0之间的值。因此,我使用时间为随机数生成器添加了种子。然后,我使用rand函数得到一个介于0到10之间的值。之后,我将该值除以10得到十进制值。我的问题是,当我尝试打印由(dRandNum%10)生成的值时,该程序将随机崩溃。还要注意的是,它不会在for循环的中间崩溃。在第一次尝试打印时始终是正确的。老实说,我认为编译器确实有些奇怪,并且想知道是否有人可以指导我。

double dRandNum = 0;
int tempRand = 0;

/* initialize random seed: */
srand ( (unsigned)time(0) );


for(int i = 0; i < 40; i++)
{
      tempRand = rand();
      cout << "tempRand= " << tempRand << endl;
      dRandNum = tempRand % 10;// + 1;

      // Crashes here for some reason.  If I don't try and print the value it's fine
      cout << "Random Num Before " << i << ": " << dRandNum << endl;

      dRandNum = dRandNum / 10;
      cout << "Random Num After " << i << ": " << dRandNum << endl;
      weights[i] = dRandNum;
}

最佳答案



那是个大错误,从来没有。这已经写满了堆损坏。这很少会导致破坏堆的代码行崩溃。总是以后,有时要晚一些。

10-04 23:15