首页 > 解决方案 > 出现分段错误不知道如何解决我知道它在哪里

问题描述

我正在制作一个程序来测试运行多线程与单线程的性能。在这个程序中,我在第 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;
  }
}

标签: c++segmentation-fault

解决方案


推荐阅读