错误:分段错误(核心转储)数组?

时间:2013-08-08 01:02:02

标签: c++ sorting

每次运行程序时,我都会收到消息: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;
            }
        }
}

1 个答案:

答案 0 :(得分:7)

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

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