【发布时间】:2013-06-08 01:30:36
【问题描述】:
函数_alloca(alloca)在栈上分配内存,不需要“free”。
是否可以在 C 中编写一个在堆栈上分配的函数?
另一种表达方式:_alloca 做到了!
或者由于其他原因,这在 C 中是不可能的,包括: 1) 功能是用 ASM 编写的 2)它是C运行时库的一个特点。
我对编写类似alloca的函数感兴趣的原因如下:
void func (const char *path, const char* filename)
{
char s[1024];
snprintf (s, sizeof(s), "%s/%s", path, filename);
}
但我更喜欢:
void func (const char *path, const char* filename)
{
char *s = alloca_sprintf ("%s/%s", path, filename);
// ... No need to free.
}
在此先感谢任何了解该主题的人。 asnprintf 是对使用固定大小缓冲区的改进,但仍需要清理。
【问题讨论】:
-
是的。我在...之后立即发现了这一点