问题描述
这样的:
char *buf = NULL;
scanf("%ms", &buf);
会得到一个动态分配的字符缓冲区。我知道这是仅限于与海湾合作委员会(特别是glibc的2.7版本)。
will get a dynamically allocated char buffer. I know this is limited to code compiled with Gcc (and specifically version 2.7 of glibc).
我也知道,正确和简单的方法是只使用的malloc()
(朋友)来获得内存。
I am also aware that the "correct" and portable way is to just use malloc()
(and friends) to get the memory.
我很好奇,但是,还有没有其他的便携式或半便携式实现了那里获得动态分配的内存?我觉得技巧和内存分配的提示,在C硬话题谷歌。
I'm curious however, are there any other portable or semi-portable implementations out there for getting dynamically allocated memory? I find tricks and tips of memory allocation in C a hard topic to "Google".
注意:这不是什么必需的,所以有对答案没有限制。
Note: This is not "required" for anything, so there are no limitations on answers.
*半便携式意思是如果你编译以同样的方式我这样做,这将工作
推荐答案
POSIX有
ssize_t getline(char **lineptr, size_t *n, FILE *stream);
和
ssize_t getdelim(char **lineptr, size_t *n, int delim, FILE *stream);
这应该有资格作为半便携。
which should qualify as semi-portable.
这篇关于是否有任何其他半/便携的方式来动态分配内存?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!