this:
char *buf = NULL;
scanf("%ms", &buf);
将获得动态分配的 char 缓冲区。我知道这仅限于使用 Gcc(特别是 glibc 的 2.7 版)编译的代码。
我也知道"正确"和便携的方式是只使用malloc()
(和朋友)来获取内存。
但是,我很好奇,是否有任何其他便携式或半便携式*实现来获取动态分配的内存?我发现 C 语言中内存分配的技巧和技巧对"谷歌"来说是一个很难的话题。
注意:这不是任何"必需的",因此对答案没有限制。
*半便携式,意思是"如果你按照我的方式编译,这将起作用"
POSIX 有
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
和
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
这应该符合半便携式的条件。