我如何可以为 char* 变量分配一个字符串,而不必事先分配内存?
例如,如果我有一个函数返回一个 char* (例如文件路径),我会以这种方式调用该函数。
char* path;
path = get_path();
如果我不知道路径的长度,我怎么能期望 char* 的行为?是否严格有必要在将路径分配给“Path”之前分配路径的大小?
最佳答案
在您的代码中:
char* path;
path = get_path();
get_path
返回一个指向字符串(或者等效地,其地址)的指针。 (指向字符串的指针是指向其第一个字符的指针)。赋值只是复制该指针值,并将其存储在 path
中。
get_path
函数本身必须分配空间来以某种方式保存字符串。
有几种方法可以做到这一点。有些要求调用者有责任在不再需要该空间时释放该空间。
推荐阅读:comp.lang.c FAQ ,特别是第 4 节(指针)、第 6 节(数组和指针)、第 7 节(内存分配)和第 8 节(字符和字符串)。
关于c - ANSI C 中的字符串处理(内存分配),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11444633/