Странная ошибка сегментации при достижении цикла for

0

У меня есть код C++, который вызывается модулем Assembly. Мой код должен сортировать массив по указателям.

Мои два вопроса находятся во втором for-loop:

  • Я комментирую цитаты, и программа сразу же segfaults, когда она приближается ко второму for-loop в моем коде, а не первый, который просто выводит массив. Я могу видеть вывод первого for-loop.
  • Я не комментирую цитаты и пробелы for-loop затем segfaults, когда он должен увеличивать 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
    Я считаю , что ваш внутренними for-loop будет увеличиваться в прошлом size . Попробуй size - 1
Теги:
arrays
for-loop
assembly
segmentation-fault

1 ответ

3
Лучший ответ
int j = i+1; i <= size; j++;

Я думаю, что это вызывает проблему.

  • 1
    Ух ты. Я не могу поверить, что я пропустил это. Как неловко для того, кто уже давно занимается кодированием. Оно работает. Благодарю.
  • 0
    пожалуйста отметьте решение как ответ, если оно работает
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню