每次运行程序时,我都会收到消息: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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
for(int pass = 0; pass < n - 1; n++)
Run Code Online (Sandbox Code Playgroud)
你n++应该增加错误的值pass++.现在意思是,您正在访问数组中的超出索引.