在malloced字符串上使用strtok有什么我应该知道的吗?在分配的字符串上使用strtok()?
在我的代码我有(笼统)
char* line=getline();
Parse(dest,line);
free(line);
其中getline()
是返回一个char *一些malloc内存的功能。 和Parse(dest, line)
是一个在线解析,将结果存储在dest
(已从其他信息中部分填充)的函数。
Parse()
在线调用strtok()
可变的次数,并做一些验证。 每个标记(一个指向strtok()
返回的指针)被放入一个队列中,直到我知道我有多少。
然后将它们复制到dest中的malloc'd char **上。
现在free(line)
和一个函数,它自由的炭的每个部分* []在dest,既想出上的valgrind为:
“地址0x5179450是8个字节大小的块内38自由” d“
或类似的东西。
我正在考虑重构我的代码,不直接在char **上存储标记,而是存储它们的副本(通过mallocing space == strlen(令牌)+1,然后使用strcpy()
)。
我相信这:http://stackoverflow.com/questions/1495368/strtok-and-memory-leaks,去回答我的问题一些whay。 – 2009-10-17 11:20:48
strtok在本地修改字符串,在删除符号的位置添加空值。并返回指向这些部分开始的指针 – 2009-10-17 11:31:56