qsort 用零填充数组?
qsort Filling Array With Zeroes?
我正在尝试对无符号长整数数组进行排序。但是,出于某种原因,qsort 正在用零填充整个数组而不是对其进行排序。我将展示我对函数、比较器和 GDB 的调用。
此图显示了 qsort 前后的数组,以及我对函数的调用。
调用如下:
qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
这是我的比较器函数,称为比较器:
int comparator(const void *p, const void *q)
{
if( *((unsigned long *)p) < *((unsigned long *)q)){
return -1;
}
else if( *((unsigned long *)p) == *((unsigned long *)q)){
return 0;
}
else{
return 1;
}
}
是什么原因造成的,我该怎么办?
qsort
参数 sizeof(scores[c])
给出了以字节为单位的大小,而不是要排序的元素的数量。
您可能会遇到很多恰好拾取零的超出范围的访问。
我正在尝试对无符号长整数数组进行排序。但是,出于某种原因,qsort 正在用零填充整个数组而不是对其进行排序。我将展示我对函数、比较器和 GDB 的调用。
此图显示了 qsort 前后的数组,以及我对函数的调用。
调用如下:
qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
这是我的比较器函数,称为比较器:
int comparator(const void *p, const void *q)
{
if( *((unsigned long *)p) < *((unsigned long *)q)){
return -1;
}
else if( *((unsigned long *)p) == *((unsigned long *)q)){
return 0;
}
else{
return 1;
}
}
是什么原因造成的,我该怎么办?
qsort
参数 sizeof(scores[c])
给出了以字节为单位的大小,而不是要排序的元素的数量。
您可能会遇到很多恰好拾取零的超出范围的访问。