函数_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 是对使用固定大小缓冲区的改进,但仍需要清理。