我遇到了一个问题,我不确定是否是问题。我有一个简单的C函数,从字符串中传递char*:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char** argv) {
passString("hello");
return (EXIT_SUCCESS);
}
void passString(char * string) {
// .... 一些代码 ....
free(string); // ???
}
我被教导要释放我不再使用的每个内存块(主要是数组)。所以我的想法是释放string,但即使在这个简单的例子中程序也会冻结或崩溃。我不确定我是否真的需要在这里释放string,如果需要,我应该如何做到这一点?
char[N]
,其中N
足够大以容纳字符串字面值中的所有字符和零终止符。"foobar"
的类型是char[7]
。我相信其他语言(即C ++)也有区别。 - pmgchar *
表示字符串字面量已被弃用,但在 C 中并未被弃用。然而,在 C 和 C++ 中修改字符串字面量都是未定义行为。 - Alok Save