2

这:

char *buf = NULL;
scanf("%ms", &buf);

将获得一个动态分配的字符缓冲区。我知道这仅限于使用 Gcc 编译的代码(特别是 glibc 的 2.7 版)。

我也知道“正确”和可移植的方式是只使用malloc()(和朋友)来获取内存。

但是,我很好奇,是否还有其他便携式或半便携式*实现来获取动态分配的内存?我发现 C 中内存分配的技巧和技巧对“Google”来说是一个很难的话题。

注意:这对任何事情都不是“必需的”,因此对答案没有限制。

* 半便携的意思是“如果你编译的方式和我一样,这将工作”

4

1 回答 1

1

POSIX 有

ssize_t getline(char **lineptr, size_t *n, FILE *stream);

ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);

这应该是半便携式的。

于 2012-12-13T15:29:07.683 回答