我遇到了一个问题,我不确定它是否是一个问题。我有一个简单的C funcion即会从字符串传递像这样一个char *:如何释放字符数组作为函数参数传入C
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
passString("hello");
return (EXIT_SUCCESS);
}
void passString(char * string) {
// .... some code ....
free(string); // ???
}
,我被教导要自由,我不是用了(主要是阵列)的每一次内存块。所以我的想法也是释放字符串,但即使是这个简单的例子,程序也会冻结或崩溃。我不确定我是否真的需要在这里释放字符串,如果是这样,我该如何实现?
@Kos:错误的,字符串文字的类型是'char [N]',其中'N'只是足够大的字符串文字中的所有字符和零终止符。 “foobar”的类型是'char [7]'。我相信其他语言(即C++)有所不同。 – pmg
哎呀......你完全正确。我的意思是“请使用const char *来引用字符串文字”。 – Kos
@Kos:只使用'char *'作为字符串字面值仅在C++中不推荐使用C语言。但是,修改字符串文本是在c和C++中都是UB。 –