MST

星途 面试题库

面试题:C语言指针数组在函数参数中的动态内存管理应用

编写一个函数,该函数接受一个指针数组作为参数,数组中的指针指向动态分配的字符串。函数要对这些字符串按字典序进行排序,并且在排序完成后释放所有动态分配的内存。请用C语言实现,要求考虑内存泄漏等问题。
34.9万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 比较函数,用于qsort
int compare(const void *a, const void *b) {
    return strcmp(*(char **)a, *(char **)b);
}

void sortAndFree(char **strArray, int size) {
    // 使用qsort进行排序
    qsort(strArray, size, sizeof(char *), compare);

    // 释放动态分配的内存
    for (int i = 0; i < size; i++) {
        free(strArray[i]);
    }
    // 释放指针数组本身的内存
    free(strArray);
}

你可以使用以下方式调用这个函数:

int main() {
    int size = 3;
    char **strArray = (char **)malloc(size * sizeof(char *));
    strArray[0] = strdup("banana");
    strArray[1] = strdup("apple");
    strArray[2] = strdup("cherry");

    sortAndFree(strArray, size);
    return 0;
}