gpt4 book ai didi

我可以/我应该释放 strtok 返回的指针吗

转载 作者:太空宇宙 更新时间:2023-11-04 00:23:56 26 4
gpt4 key购买 nike

所以我正在动态创建一个字符串数组。然后我为该数组中的每个元素分配一个通过调用 strtok 返回的指针。在我的过程结束时,当我需要重做所有事情时,我一直在尝试释放所述数组元素中的指针,但我不断收到错误信息

*** 检测到 glibc *** ./prgm:munmap_chunk():无效指针:0x00007fff600d98

此外,在循环结束时释放 inputStr 是否有意义?

我的逻辑“根本不合逻辑”的想法哪里错了..例如代码

   char** argvNew = (char**)calloc(33,sizeof(char*));
char inputStr[128];
do{
scanf("%127[^\n]%*c", inputStr);
token = strtok(inputStr, delim);

/* Add tokens to array*/
varNum= 0;
for(i = 0; token != NULL; i++){
varNum++;
argvNew[i] = token;
token = strtok(NULL, delim);
}
argvNew[i] = NULL;

//Free argvNew
for(i = 0; i < varNum;i++){
printf("Deleting %i, %s\n",i,argvNew[i]);
free(argvNew[i]);
}
while(1);

最佳答案

不,你不应该释放它。它返回一个指向 inputStr 中字符的指针(或到达末尾时返回 NULL)。它没有分配任何新内存,所以没有什么可以释放的。

如果 inputStr 是动态分配的,您应该在用完后释放它。

关于我可以/我应该释放 strtok 返回的指针吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39282669/

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