数组数组中的分段错误

时间:2014-09-14 02:39:40

标签: c++ arrays pointers segmentation-fault

我刚开始学习C ++并得到这样的错误。它通过编译但在运行期间得到分段错误。有人可以帮我吗?我不确定问题出在哪里,因为我真的不熟悉分段错误。我确实检查了一些关于这个主题的帖子并没有得到它。

#include <iostream>
using namespace std;
class ThreeSum{

private :
  int *numbers;
  int n;

public:
  ThreeSum();
  ThreeSum(int numbers_in[], int n_in);
  int **threeSumCombinations(){
    int **SumCom;
    for(int i=0; i<n; i++){
      for(int j=i+1; i<n; j++){
        for(int k=j+1; j<n; k++){
          if(numbers[i]+numbers[j]+numbers[k]==0){
            SumCom[i][0]=numbers[i];
            SumCom[i][1]=numbers[j];
            SumCom[i][2]=numbers[k];
          }
        }
      }
    };
    return SumCom;
  }
};

ThreeSum::ThreeSum(int numbers_in[], int n_in)
  :numbers(numbers_in), n(n_in){}

int main(){
  int arr[5] = {2,1,0,-1,-2};
  ThreeSum t1(arr,5);
  cout << sizeof(t1.threeSumCombinations()) << endl;//output is 8
  for(int i=0; i<sizeof(t1.threeSumCombinations()); i++){
    cout << t1.threeSumCombinations()[i] << endl;
  }
  return 0;
}

1 个答案:

答案 0 :(得分:0)

我分段错误是一个错误,当你读到你不想到的内存时会发生错误。使用指针和数组时,这种情况最常发生。您的问题很可能是您的阵列问题。我无法告诉你,但只是尽量确保你仔细检查。

观察它,其中一个问题似乎是循环的第三个&#39;。你永远不会检查k是否达到极限。因此,它只是继续前进。这是一个无限循环。