Segmentation fault 分段错误11虽然循环,但似乎没有索引越界 我很难理解为什么我的C++代码会导致:

Segmentation fault 分段错误11虽然循环,但似乎没有索引越界 我很难理解为什么我的C++代码会导致:,segmentation-fault,c++20,Segmentation Fault,C++20,分段错误:11 我已经发现错误发生在哪一行,但我仍然不知道问题出在哪里 double time_MC_loop[]={0.0, 0.0}; while(order_loop<=order-1 and T()<time_MC) { order_loop+=1; if (order_loop!=order) { time_MC_loop[1]+=time_MC*pow(3.0,(double)order_loop-order-1

分段错误:11

我已经发现错误发生在哪一行,但我仍然不知道问题出在哪里

double time_MC_loop[]={0.0, 0.0};
while(order_loop<=order-1 and T()<time_MC)
  {
      order_loop+=1;
      if (order_loop!=order)
      {
          time_MC_loop[1]+=time_MC*pow(3.0,(double)order_loop-order-1);
          time_MC_loop[0]=time_MC*pow(3.0,(double)order_loop-order-1);
      }
      else
      {
          time_MC_loop[0]=-time_MC_loop[1]+time_MC;
          time_MC_loop[1]=time_MC;
      }
      
     //here I'm skipping parts of the code where I don't use either T() or time_MC_loop
      
      bool still_time=T()<time_MC_loop[1];
      cout<<still_time;
      
      //when I write "exit(1);" here, I don't get a segmentation fault, 
      //and the program prints the expected value of the boolean still_time
      
      while(still_time)
      {
         exit(1);
         // However, I get a segmentation fault here, so it seems the bug occurs in the while test.
       //...
       }
double time_MC_loop[]={0.0,0.0};

while(order_loop我发现了错误:在我上面的代码中,分段错误发生在第一个while循环中的一个完全不相关的变量上,但不知怎的,它没有在这一行打印错误。

你能提供一个解决方案吗?另外,使用C++20时,你使用了一个相当新的工具链。你是否尝试过使用address sanitizer进行编译(
-fsanize=address
在GCC和Clang的情况下)?在尝试创建一个最小的可复制示例时,我发现了错误:分段错误发生在我上面代码的第一个While循环中的一个完全不相关的变量,但不知怎的,它没有在这一行打印错误。如果有什么东西写入了非法的(正式的)之前的内存位置,可能会因为内存内容损坏而导致seg故障或事后分配\解除分配错误。如果您发现问题,请将其作为答案发布,并将该答案标记为已接受。是的,您可以(也应该)回答自己的问题。请不要在标题中添加“已解决”。