gpt4 book ai didi

c - strdup 将每一行放入 char ** (数组)

转载 作者:行者123 更新时间:2023-11-30 19:46:02 27 4
gpt4 key购买 nike

我不会将每一行strdup到char **结果中。我做了以下事情:

static char **alsa_get_device(void)
{
int o;
char **result;

o = 0;
for (elem = snd_mixer_first_elem(handle); elem; elem = snd_mixer_elem_next(elem)) {
if (!snd_mixer_selem_is_active(elem))
continue;
if (!snd_mixer_selem_has_playback_volume(elem))
continue;
result[o] = strdup(snd_mixer_selem_get_name(elem));
o++;

result[o] = NULL;
}

return result;
}

并让函数返回 GList:

GList *get_mixer_list(void)
{
int i;
char **array, *dev;
GList *result = NULL;

array = alsa_get_device();
if (!array)
return NULL;

i = 0;
dev = array[i];
while (dev) {
char *text = g_strdup(dev);
result = g_list_append(result, text);
free(dev);
dev = array[++i];
}
free(array);

return result;
}

但是当我使用时会发生崩溃: result[o] = strdup(snd_mixer_selem_get_name(elem));

最佳答案

以下是您的代码中的错误:

  • 如评论中所述结果未初始化就使用
  • 您使用了free(array),但没有使用malloc()
  • 在此部分:

    char *text = g_strdup(dev);
    result = g_list_append(result, text);
    free(dev);
    dev = array[++i];

您应该将 free(dev) 替换为 free(text)

关于c - strdup 将每一行放入 char ** (数组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25049349/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com