我刚开始学习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;
}
答案 0 :(得分:0)
我分段错误是一个错误,当你读到你不想到的内存时会发生错误。使用指针和数组时,这种情况最常发生。您的问题很可能是您的阵列问题。我无法告诉你,但只是尽量确保你仔细检查。
观察它,其中一个问题似乎是循环的第三个&#39;。你永远不会检查k是否达到极限。因此,它只是继续前进。这是一个无限循环。