给定的两个代码之间有什么区别.一个在ideone上运行时超出了时间限制,另一个工作正常

HKe*_*dia -13 c++ memory loops timeout

第一个代码:工作正常,成功时间为0秒

    int main()
    {
      int n=100000;
      for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
         {}
      cout<<"ffdfdf";
    }
Run Code Online (Sandbox Code Playgroud)

第二个代码:超出时间限制

    int main()
    {
      int n=100000;
      bool **a=new bool*[n];
      for(int i=0;i<n;i++)
      {
        bool[i]=new bool[n];
        for(int j=0;j<n;j++)
         {
           bool[i][j]=1;
         }
      }
      cout<<"ffdfdf";
    }
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释为什么这两个代码片段有很大的时间差异.我不理解它.

Bat*_*eba 5

bool[i]=new bool[n];非常昂贵的cf. 其他陈述.

一个好的编译器会优化你的第一个程序cout << "ffdfdf";,因为它会知道循环没有做任何事情.

一旦你boolas 替换你的错误s,所以第二个片段实际编译,你会被建议配对你的new[]电话delete[].