use*_*392 11 c malloc free strtok
我对在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);
}
Run Code Online (Sandbox Code Playgroud)
进一步假设'line'在传递给myFunc之前被malloced.我应该在使用strtok之后释放原始字符串还是为我们完成工作?另外,如果'line'没有被malloced并且我尝试使用上面的函数会发生什么?取而代之的是更安全吗?(假设程序员知道该行未被malloced,则不会免费拨打电话)
调用
char* garbageLine = line;
myFunc(line);
free(garbageLine);
Run Code Online (Sandbox Code Playgroud)
功能定义
void function myFunc(char* line) {
// Do some work
// Call strtok on 'line' multiple times until it returns NULL
// Do more work
}
Run Code Online (Sandbox Code Playgroud)