我仍然lldb
錯誤,因爲我可能訪問的內存,我不應該。 看起來我在使用io_seg_sort
中的參數進行操作時出錯,因爲在調用qsort
之前,它仍然可以。C++ qsort二維數組
#define IO_SEG_IMAX (IO_SEG - 1)
static int io_seg_sort (const void * seg1, const void * seg2) {
int * _seg1 = (int *)seg1;
int * _seg2 = (int *)seg2;
cout << _seg1[1] <<endl; // this gives some random values and not what i am expecting
if (_seg1[1] > _seg2[1]) {
return 1;
}
else if (_seg1[1] < _seg2[1]) {
return -1;
}
else {
return 0;
}
}
int **temp = new int *[IO_SEG];
for (int i = 0; i <= IO_SEG_IMAX; i++) {
temp[i] = new int[2];
memcpy(temp[i], inputs[i], sizeof(int) * 2);
}
qsort(temp, IO_SEG, sizeof(int *) , io_seg_sort);
EDIT1:這個問題是調用的cout
,而不是我所期待的時候我得到的一些io_seg_sort
隨機值。 inputs[i]
是班級成員int inputs[IO_SEG][2]
;
爲什麼不從'algorithm'使用C++級別的'std :: sort' **? –
IO_SEG和IO_SEG_IMAX之間的關係是什麼? – Moberg
@Moberg這意味着IO_SEG_INDEX_MAX – Krab