如何清除传递给C中的函数的char*?

gro*_*ove 3 c pointers

如何使函数清除C字符串和/或释放分配的内存?为什么以下代码不起作用?

void freeStr(char** str) {
    free(*str);
}
int main() {
    char* str = "some string";
    freeStr(&str);
    printf("%s", str);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

eq-*_*eq- 10

您既不能释放也不能清除字符串文字所表示的数组内存.

但是,要失去对它的访问权限,您只需要更改存储其地址的指针:

str = NULL; // in main
// or
*str = NULL; // in freeStr
Run Code Online (Sandbox Code Playgroud)