在函数中使用后,将char指针设置为NULL

Usm*_*per 0 c malloc null pointers

在C语言中,我有一个函数,其中要获取一个字符串作为参数,然后在使用它后要销毁它,因为我必须在无限循环中调用它,并让Process在5之后返回-1073741819(0xC0000005)分钟。

这是我的功能:

void renderText(char *text) {
    //use it here and then destroy it.
    *text = NULL; //not working!
    text = NULL; //also not!
    text[0] = '\0'; //also not!
}
Run Code Online (Sandbox Code Playgroud)

将参数传递为:

renderText("Hello There!");
Run Code Online (Sandbox Code Playgroud)

我可以使用一个malloc()函数来创建一个字符串,然后可以传递给上面的函数,但是我必须无限次调用它,以便函数可以通过引用调用指针来使它为NULL。

Wea*_*ane 6

这条线

text[0] = '\0';
Run Code Online (Sandbox Code Playgroud)

将取消引用指针,text但您已经

text = NULL;
Run Code Online (Sandbox Code Playgroud)

因此这可能会导致段错误。您可以

free(text);
Run Code Online (Sandbox Code Playgroud)

但最好让呼叫者对此负责。这使该函数对于动态分配的参数或调用者想再次使用的参数更加有用。

但是您的具体用法是

renderText("Hello There!");
Run Code Online (Sandbox Code Playgroud)

并且字符串文字不能更改:它是只读的。因此,您的函数 不得尝试终止传递的参数。