在我的以下程序中,qsort 函数给出了 seg 错误,我无法理解我到底错在哪里:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int cmpfnc (const void *a, const void *b) {
return *(char *)a - *(char *)b;
}
int checkPermutation_sort (char *s1, char *s2) {
int l1 = strlen(s1);
int l2 = strlen(s2);
if (l1 != l2) return -1;
qsort(s1, l1, sizeof(char), cmpfnc);
qsort(s2, l2, sizeof(char), cmpfnc);
return strcmp(s1, s2);
}
int main () {
printf("%d\n", checkPermutation_sort("abvasfa", "avbasda"));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
从我尝试调试来看,这不是比较函数的错误。这是排序时内存不足的地方。但我无法理解为什么以及如何,在此处附上函数调用堆栈的屏幕截图:
以下是调试器输出:
Reading symbols from a.out...
(gdb) info break
Num Type Disp Enb …Run Code Online (Sandbox Code Playgroud)