【发布时间】:2016-10-26 13:52:58
【问题描述】:
是否每次使用strtok() 时都必须为字符串重新分配内存,还是该函数会为您执行此操作?我想知道,因为我正在编写一个程序,它从文件中读取一行并将其分解为标记。我想将每个令牌存储在一个名为cell 的变量中。我可以创建多个字符串并将它们放在一个链表中,但这会给程序增加很多开销,所以我想尽量避免它。因此,假设您将cell 的值设置为从strtok() 返回的第一个字符串,使用它,然后使用赋值语句将其值设置为从strtok() 返回的第二个字符串。我知道这只会将指针重定向到新的字符数组,放弃旧的数组。这会导致旧字符串成为丢失的对象,还是strtok() 为您释放旧字符串?
【问题讨论】:
-
strtok不分配任何内存。是什么让您认为它确实有效? -
strtok连续将分隔符替换为'\0',这会改变字符串但将子字符串保留在内存中的原始位置内。
标签: c string memory-management tokenize strtok