gpt4 book ai didi

c - 重新分配() : invalid pointer Aborted (core dumped)

转载 作者:行者123 更新时间:2023-12-02 09:08:55 25 4
gpt4 key购买 nike

我正在努力创建一个类似于 bash 的 shell。我在尝试获取与命令关联的参数(即 ls -l)时遇到错误。我在网上搜索过,没有找到任何有用的信息。

char *userInCopy;
char *ret;
userInCopy = (char*)calloc(1024, sizeof(char));
ret = (char*)calloc(64, sizeof(char));
strcpy(userInCopy, userIn);
int i = 0;
while((ret = strsep(&userInCopy, " "))){
*(args + i) = (char*)calloc(strlen(ret), sizeof(char));
strcpy((*(args+i)), ret);
i++;
ret = (char*) realloc(ret, (64)* sizeof(char));
}

我从用户的字符 userIn 中获取输入,并且该输入已正确分配。然后,我使用 strsep 单独解析输入,获取每个参数。我可以获得 ls 参数和 -l 参数,但是当它在 -l 之后进入 realloc 时,它会给我“realloc():无效指针”错误。我不明白为什么在获得 ls 参数后第一次会起作用,但在获得 -l 参数后却失败了。有什么建议吗?

最佳答案

问题是您正在用 strsep 返回值覆盖 ret

while((ret = strsep(&userInCopy, " "))) //Here

有另一个临时变量来存储 strsep 返回。


来自realloc man page .

void *realloc(void *ptr, size_t size);

ptr must have been returned by an earlier call to malloc(), calloc() or realloc().

关于c - 重新分配() : invalid pointer Aborted (core dumped),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54921784/

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