gpt4 book ai didi

c++ - 使用大循环的测试程序似乎中途挂起

转载 作者:行者123 更新时间:2023-11-28 02:45:36 25 4
gpt4 key购买 nike

我正在和我的教授一起研究性能测量软件的使用,她建议我编写一个示例程序,它只使用一些大循环来进行一些函数调用和浮点计算,以便掌握它。现在,它运行良好,直到达到 i = 110,j = 99000,此时它停止打印并且似乎挂起或暂停操作。我试过使用 fflush( stdout ),但没有任何区别。您对可能导致这种情况的原因有任何想法吗? (只需从命令行正常运行即可;使用的编译器是 g++。)

#include <iostream>

double arrayFill(double a, double b){
double c = (a+.5)*(b+.5);
return c;
}

double bigLoop(double val){
for (int i = 0; i < 20; ++i){
for (int j = 0; j < 20; ++j){
val += .5;
}
}
return val;
}

int main(int argc, char* argv[]){

double **bigArray = new double*[100];

for (int i = 0; i < 100000; ++i){

bigArray[i] = new double[10];

for (int j = 0; j < 100000; ++j){
double x = (double) i/1000;
double y = (double) j/1000;
bigArray[i%100][j%10]=arrayFill(x, y);
bigArray[i%100][j%10]=bigLoop(bigArray[i%100][j%10]);
if (j%1000 == 0){
std::cout << bigArray[i%100][j%10] << std::endl;
std::cout << "i = " << i << std::endl;
std::cout << "j = " << j << std::endl;
fflush( stdout );
}
}
}
return 0;
}

最佳答案

您正在使用无效索引访问 bigArray

您只为 bigArray 分配了 100 个元素。 bigArray[i] = ... 是 i >= 100 的未定义行为。在您的程序中,i 上升到 99999。

关于c++ - 使用大循环的测试程序似乎中途挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24541479/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com