1

这里基本上是一个简单的双指针代码和我正在尝试使用的代码:

int argsCount = 1;
char **cmdArgs1 = malloc((argsCount + 1)*sizeof(char*));

我想将值输入到 cmdArgs1 中,这基本上就是我正在做的并导致 seg 错误

for(counter = 0; counter < argsCount; counter++)
{
    strcpy(cmdArgs1[counter],"ls");
}

我在想我不能使用“cmdArg1 [counter]”复制到“ls”,因为双指针不能那样工作?我不确定...

即使我认为它有点模糊,但我不知道如何很好地表达这个问题,我会尝试根据评论进行更新。谢谢!

4

1 回答 1

3

cmdArgs1是一个指向指针的指针,这意味着为数组本身分配空间是不够的。您需要为单个字符数组(或单个 C 字符串)分配空间。

您可以单独调用malloc

for(counter = 0; counter < argsCount; counter++)
{
    cmdArgs1[counter] = malloc(strlen("ls")+1); // +1 for null terminator
    strcpy(cmdArgs1[counter], "ls");
}

或与strdup

for(counter = 0; counter < argsCount; counter++)
{
    cmdArgs1[counter] = strdup("ls");
}

在这两种情况下,您的程序都有责任在ing 数组本身free之前 ing 数组的元素:free

for(counter = 0; counter < argsCount; counter++)
{
    free(cmdArgs1[counter]);
}
free(cmdArgs1);
于 2013-10-13T12:01:33.200 回答