У меня есть код C++, который вызывается модулем Assembly. Мой код должен сортировать массив по указателям.
Мои два вопроса находятся во втором for-loop
:
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;
}
int j = i+1; i <= size; j++;
Я думаю, что это вызывает проблему.
for-loop
будет увеличиваться в прошломsize
. Попробуйsize - 1