在 C 中,我有一个函数,在该函数中我获取一个字符串作为参数,然后在使用它之后,我想销毁它,因为我必须在无限循环中调用它,并且在 5 之后让Process 返回 -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!
}
传递参数为:
renderText("Hello There!");
我可以使用一个
malloc()
函数来创建一个字符串,然后可以传递给上面的函数,但是我必须无限次调用它,这样有什么方法可以在函数中将它设为 NULL,因为指针是通过引用调用的。
这里
void renderText(char *text) { }
text
是char*
类型的,在使用它之后,不要指向text
任何无效的内存位置,它总是更好地初始化,NULL
这意味着它不指向任何内容。因此这
text = NULL;
仅在此 API 中是正确的,因为它不反映在此函数中本地创建的NULL
调用函数中的分配text
。这
*text = NULL;
无效,因为*text
它的char
类型 whileNULL
等效于(void*)0
。
这
text[0] = '\0';
如果错误处理是根据上述语句,则工作正常。例如
if(strlen(text) != 0) { /* something is there inside text */ }
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句