c++ - 出现分段错误不知道如何解决我知道它在哪里
问题描述
我正在制作一个程序来测试运行多线程与单线程的性能。在这个程序中,我在第 26 行遇到了分段错误,它说dataArray[i] = 0;
我已经在错误所在的行下方注释掉了。我知道它是哪一行的原因是因为我把我的代码扔了一个调试器。
这是完整的代码:
#include<iostream>
#include <fstream>
using namespace std;
// your custom calculation done on each index of the array
inline int calcValue(int index)
{
return index * 2 + 1;
}
int main(int argc, char *argv[])
{
const int N = 1000000;
int *dataArray = new int[N];
double timearray[100];
ofstream myfile;
myfile.open("data.csv");
for(int a=0; a<100; a++)
{
// init array
for(int i=0;i<N;i++)
dataArray[i] = 0;//error is here
// traverse array and measure time
struct timespec start, stop;
//save start time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &start);
for(int i=0;i<N;i++)
dataArray[i] = calcValue(i);
//save end time
clock_gettime(CLOCK_PROCESS_CPUTIME_ID, &stop);
// calc elapsed time
double cpuTime = (stop.tv_sec - start.tv_sec) * 1e6 + (stop.tv_nsec - start.tv_nsec) / 1e3; // in micros
timearray[a]=cpuTime;
// report results
cout<<"Start verify Calculation..."<<endl;
for(int i=0;i<N;i++)
{
if(calcValue(i)!=dataArray[i])
{
cout<<"Bad value "<<dataArray[i]<<" at position "<<i<<endl;
break;
}
}
cout<<"End verify calculation"<<endl;
cout<<"CPU time micro: "<<cpuTime<<endl;
// cleanup
delete []dataArray;
}
for(int i=0; i<100; i++){
myfile <<timearray[i]<<endl;
}
}
解决方案
推荐阅读
- angular - IDE 未检查带有前导下划线的 TypeScript 私有属性
- r - 在 Windows 10 上使用 UTF-8 运行 Rscript
- c# - 应用程序在 Windows Mobile 上显示一个旋转的 Windows 徽标
- machine-learning - 线性回归脚本在 Python 中不起作用
- docker - Docker buildkit 缓存位置/大小和 ID
- java - 'Nothing' 类型的表达式 'return length as Int.toString' 不能作为函数调用
- regex - 如何在我的正则表达式中排除逗号
- c# - Sql 插入 c# windows 窗体
- bash - 如何保存到var,输出中只有一个
- java - 枚举转换名称响应