这样:
char *buf = NULL;
scanf("%ms", &buf);
将获得动态分配的char缓冲区。我知道这仅限于使用Gcc编译的代码(特别是glibc的2.7版本)。
我也知道“正确”和便携的方式是只使用malloc()
(和朋友)来获取内存。
我很好奇,是否还有其他便携式或半便携式 * 实现来获取动态分配的内存?我发现C中的内存分配技巧和提示是“Google”的难题。
注意:这对任何事情都不是“必需的”,因此答案没有限制。
*半便携式意思是“如果你按照我的方式编译,这将有效”
答案 0 :(得分:1)
POSIX
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
和
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
应符合半便携式标准。