我在读Use Python for Scientific Computing,并决定自己测试代码。所以C++代码(有点修改)为什么这段代码没有输出
#include <cstdlib>
#include <ctime>
#include <iostream>
#include <cstring>
int main() {
std::clock_t begin = std::clock();
double a1[500][500];
double a2[500][500];
double a3[500][500];
memset(a1, 0, 500*500*sizeof(double));
memset(a2, 0, 500*500*sizeof(double));
memset(a3, 0, 500*500*sizeof(double));
int i, j, k;
for(i = 0; i < 500; i++) {
for(j = 0; j < 500; j++) {
for(k = 0; k < 500; k++) {
a3[i][j] += a1[i][k] * a2[k][j];
}
}
}
std::clock_t end = std::clock();
std::cout << (double)(end - begin)/(double)CLOCKS_PER_SEC<<std::endl;
return 0;
}
这是一个非常简单的代码,但奇怪的是没有生成任何输出。不是0,但根本没有。我尝试了VC11和MinGW 4.7,但它们都没有产生任何东西。只有当for
内部环路被删除时,这个代码才会产生一个输出,它是0.
如果我在VS 2012中调试,将会抛出“堆栈溢出”的异常,如果不在调试中则不会发生错误模式。
这种奇怪的行为是什么原因?
编辑
所以我用new
,这时候有一个正常输出0.83。
不过,我发现好奇的是没有显示堆栈溢出错误,但程序只是退出而没有提供输出。
你等了多少时间? – UmNyobe
我在'gcc 4.6.3'上得到了'0.83' [各种] –
我想知道这是不是给你堆栈溢出。尝试使用新的而不是本地数组声明。 – sarat