到达for-loop时出现奇怪的分段错误

时间:2014-11-14 05:00:10

标签: c++ arrays for-loop assembly segmentation-fault

我有一些由Assembly模块调用的C ++代码。我的代码应该通过指针对数组进行排序。

我的两个问题存在于第二个for-loop

  • 当我接近代码中的第二个for-loop时,我会立即注释掉cout和程序段错误,而不是第一个只输出数组的程序。我能够看到第一个for-loop
  • 的输出
  • 我不会对couts和for-loop运行进行注释,然后在必须增加i时运行段错误。我能够看到for-loop所做的所有输出。

以下是代码:

#include <iostream>

using namespace std;

extern "C" void swapASM(double (**address));

extern "C" void sortbypointers(double *arr[], long size)
{
    cout << "Before sort: " << endl;
    for(int i = 0; i < size; i++)
    {
        cout << (*(arr[i])) << " ";
    }

    // problems starts here
    for(int i = 0; i < size; i++)
    {
        cout << endl << "i: " << i;
        for(int j = i+1; i <= size; j++)
        {
            if((*(arr[i])) > (*(arr[j])))
            {
                //cout << endl << "Before swap: \ni: " << i << "\narr[i]: " << *(arr[i]) << "\nj: " << j << "\narr[j]: " << *(arr[j]) << endl;
                swapASM(&(arr[i]));
                //cout << endl << "After swap: \ni: " << i << "\narr[i]: " << *(arr[i]) << "\nj: " << j << "\narr[j]: " << *(arr[j]) << endl;
            }
        }
    }

    cout << endl << "After sort: " << endl;
    for(int i = 0; i < size; i++)
    {
        cout << *(arr[i]) << " ";
    }

    cout << endl << "Return" << endl;
    return;

}

1 个答案:

答案 0 :(得分:3)

int j = i+1; i <= size; j++;

我认为这导致了这个问题。