当您在 C 中的 char 指针上调用 strtok 时,我有些困惑。我知道它会修改字符串的内容,所以如果我在名为“line”的变量上调用 strtok,它的内容会改变。假设我遵循以下方法:
void function myFunc(char* line) {
// get a pointer to the original memory block
char* garbageLine = line;
// Do some work
// Call strtok on 'line' multiple times until it returns NULL
// Do more work
free(garbageLine);
}
进一步假设“line”在传递给 myFunc 之前被分配。我应该在使用 strtok 后释放原始字符串还是为我们完成这项工作?另外,如果'line'没有被分配并且我尝试使用上面的函数会发生什么?改为执行以下操作更安全吗?(假设程序员如果知道该行没有被分配就不会调用 free)
调用
char* garbageLine = line;
myFunc(line);
free(garbageLine);
函数定义
void function myFunc(char* line) {
// Do some work
// Call strtok on 'line' multiple times until it returns NULL
// Do more work
}