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

Segmentation Fault (Core Dumped) C++ - Pointers

本文关键字:C++ 指针 转储 错误 核心 分段      更新时间:2023-10-16

我对指针很陌生,我被分配执行此数组加倍任务,但每当我运行代码时,我都会收到分段错误(核心转储)错误。有人可以查看我的代码并告诉我错误来自哪里以及我可以做些什么来修复它吗?

我很困,任何帮助将不胜感激。

法典:

                   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;

那里的某个地方有错误。任何代码中都没有其他指针引用。

谢谢

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

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; 
}