0

每次我运行程序时,我都会收到消息:分段错误(核心转储)。我尝试做一些研究,似乎问题与分配给非法内存有关。我也尝试过调试程序,似乎问题出在 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;
            }
        }
}
4

1 回答 1

8
for(int pass = 0; pass < n - 1; n++)

您正在增加错误的值,n++应该是pass++. 现在的意思是,您正在访问数组中的超出范围的索引。

于 2013-08-08T01:07:24.247 回答