分段错误(核心转储)C ++ - 指针

时间:2016-06-10 23:34:59

标签: c++ pointers

我对指针很新,我被指派做这个数组加倍任务,但每当我运行我的代码时,我都会遇到分段错误(Core Dumped)错误。 有人可以查看我的代码并告诉我错误来自哪里以及我可以做些什么来解决它?

我非常困难,非常感谢任何帮助。

代码:

                   int size = length;
                   string *new_array = NULL;
                   string *tmp_array = new string[50];
                   for(int k=0; k<50; k++)//Initial array copying.
                       tmp_array[k] = wordArray[k];

                   for(int i=0; i<=1; i++)//Array range 0 to n-1
                   {
                      new_array = new string[size*2];
                      for(int j=0; j<size; j++)//Array range 0 to n-1
                      {
                         new_array[j]=tmp_array[j];
                         new_array[j+size]="empty";
                      }
                      delete[] tmp_array; //Deleting old array
                      size=size*2; 
                  }
                  delete[] tmp_array;// To free memory
                  cout<<new_array[x]<<endl;

那里有错误。 任何代码中都没有其他指针引用。

由于

1 个答案:

答案 0 :(得分:0)

问题是您在tmp_array d之后尝试访问delete

for(int i=0; i<=1; i++)//Array range 0 to n-1
{
   new_array = new string[size*2];
   for(int j=0; j<size; j++)//Array range 0 to n-1
   {
      new_array[j]=tmp_array[j];
      new_array[j+size]="empty";
   }

   // The deleted tmp_array is used in the next iteration of the loop,
   delete[] tmp_array; //Deleting old array

   //===============================
   // Add this to fix the problem
   //===============================
   tmp_array = new_array;

   size=size*2; 
}