每次运行程序时,我都会收到消息:Segmentation fault(core dumped)。我尝试做了一些研究,似乎问题与分配非法内存有关。我也试过调试程序,似乎问题在于linearsort()函数,因为在注释掉之后,其余的语句都能正常工作。
#include <iostream>
using namespace std;
int main()
{
void linearsort(int [], int);
int arr[10];
for( int j = 0; j < 10; j++)
arr[j] = j +1;
linearsort(arr,10);
for(int i = 0; i < 10; i++)
cout << arr[i] << " ";
cout << endl;
cin.get();
return 0;
}
void linearsort(int arr[],int n)
{
int temp;
for(int pass = 0; pass < n - 1; n++)
for(int cand = pass + 1; cand < n; cand++){
if(arr[pass] > arr[cand]){
temp = arr[pass];
arr[pass] = arr[cand];
arr[cand] = temp;
}
}
}
答案 0 :(得分:7)
for(int pass = 0; pass < n - 1; n++)
您正在递增错误的值,n++
应为pass++
。现在意思是,你正在访问数组中超出范围的索引。