epa*_*dge 2 c memory coredump realloc
我正在创建一个类似于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));
}
Run Code Online (Sandbox Code Playgroud)
我从char userIn中获取用户的输入并正确分配.然后我使用strsep单独获取每个参数来解析输入.我可以得到ls参数和-l参数,但是当它在-l之后转到realloc时它会给我"realloc():无效指针"错误.我迷失了为什么这会在获得ls参数后第一次工作但在获得-l参数后失败.有什么建议?
问题是要覆盖ret有strsep返回值.
while((ret = strsep(&userInCopy, " "))) //Here
Run Code Online (Sandbox Code Playgroud)
有另一个临时变量来存储strsep返回.
Run Code Online (Sandbox Code Playgroud)void *realloc(void *ptr, size_t size);
ptr必须由之前调用malloc(),calloc()或realloc()返回.
| 归档时间: |
|
| 查看次数: |
184 次 |
| 最近记录: |