gpt4 book ai didi

c - 在分配的字符串上使用 strtok()?

转载 作者:太空宇宙 更新时间:2023-11-04 05:47:01 25 4
gpt4 key购买 nike

关于在 malloced 字符串上使用 strtok,有什么我应该知道的吗?

在我的代码中(一般而言)

char* line=getline();
Parse(dest,line);
free(line);

哪里getline()是一个将 char * 返回到某个 malloced 内存的函数。和 Parse(dest, line)是一个做在线解析的函数,结果存储在dest中, (之前已部分填充,来自其他信息)。

Parse()电话 strtok()在线次数可变,并进行一些验证。每个 token (指向 strtok() 返回的内容的指针)都被放入队列中,直到我知道我有多少。

然后将它们复制到 dest 中的 malloc'd char**。

现在free(line)和一个释放 dest 中 char*[] 的每个部分的函数,它们都出现在 valgrind 上:

"Address 0x5179450 is 8 bytes inside a block of size 38 free'd"

或类似的东西。

我正在考虑重构我的代码,不直接将 token 存储在 char** 上,而是存储它们的副本(通过分配空间 == 到 strlen(token)+1,然后使用 strcpy() )。

最佳答案

有一个函数 strdup 分配内存,然后将另一个字符串复制到其中。

关于c - 在分配的字符串上使用 strtok()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1581985/

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