如何使函数清除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)