小编Ali*_*ani的帖子

对导致段错误的字符数组进行 qsort

在我的以下程序中,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)

c arrays segmentation-fault

2
推荐指数
1
解决办法
108
查看次数

标签 统计

arrays ×1

c ×1

segmentation-fault ×1