gpt4 book ai didi

c - 我需要释放 strtok 结果字符串吗?

转载 作者:太空狗 更新时间:2023-10-29 16:43:40 27 4
gpt4 key购买 nike

或者更确切地说,strtok 如何生成它的返回值指向的字符串?它是否动态分配内存?我问是因为我不确定是否需要在以下代码中释放 token :

STANDARD_INPUT 变量用于退出过程,以防我分配的内存不足并且字符串是测试对象。<​​/p>

int ValidTotal(STANDARD_INPUT, char *str)
{
char *cutout = NULL, *temp, delim = '#';
int i = 0; //Checks the number of ladders in a string, 3 is the required number
temp = (char*)calloc(strlen(str),sizeof(char));
if(NULL == temp)
Pexit(STANDARD_C); //Exit function, frees the memory given in STANDARD_INPUT(STANDARD_C is defined as the names given in STANDARD_INPUT)
strcpy(temp,str);//Do not want to touch the actual string, so copying it
cutout = strtok(temp,&delim);//Here is the lynchpin -
while(NULL != cutout)
{
if(cutout[strlen(cutout) - 1] == '_')
cutout[strlen(cutout) - 1] = '\0'; \\cutout the _ at the end of a token
if(Valid(cutout,i++) == INVALID) //Checks validity for substring, INVALID is -1
return INVALID;
cutout = strtok(NULL,&delim);
strcpy(cutout,cutout + 1); //cutout the _ at the beginning of a token
}
free(temp);
return VALID; // VALID is 1
}

最佳答案

strtok 操作你传入的字符串并返回指向它的指针,所以没有分配内存。

请考虑使用 strsep 或至少使用 strtok_r 来避免以后的麻烦。

关于c - 我需要释放 strtok 结果字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20904175/

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