c - ANSI C 中的字符串处理(内存分配)

标签 c string pointers memory-management

我如何可以为 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/

相关文章:

java - 分割字符串而不丢失分割字符

string - 从 lisp 中的八位字节解码单个字符

c - [-Win 兼容指针类型]。不知道是什么问题

为 PuTTYTray 创建预制项目

c++ - 如果 C++ 向后兼容 C,那么为什么 void main 在 C++ 中是非法的?

C rename() FileNotFound 尽管文件存在

string - 如何将 Vec<String> 转换为 Vec<&str>?

c - ARM 逆向工程 ROM 转储

pointers - 将 nil 分配给指针

c - 为什么我的可变参数函数同时适用于 int 和 long long?