1
在POSIX(POSIX:2008)中是否有任何syscall/function在堆栈中分配内存,而不是堆?POSIX调用堆栈内存分配
我没有找到任何东西,但没有正式包含在POSIX文档中的alloca。
在POSIX(POSIX:2008)中是否有任何syscall/function在堆栈中分配内存,而不是堆?POSIX调用堆栈内存分配
我没有找到任何东西,但没有正式包含在POSIX文档中的alloca。
那么,你实际上并不需要alloca
,因为C99提供了可变长度的数组,它给了你相同的功能(大部分)。
你应该看看使用它。我认为这比POSIX解决方案更好,因为它是“主要”标准的一部分。
一般来说,在堆栈上分配内存是不好的做法,无论如何应该避免。我没有编写任何需要在堆栈空间分配内存的代码,但是我想知道是否存在这样的事情,因为我一直无法找到它。另外,虽然这样做是不好的做法,但通常可以在维基百科用alloca显示它,所以也必须有这样的定义。 – Ionic 2010-11-09 12:53:37
@Ionic:由于'alloca',glibc'fnmatch'去年的讨厌漏洞应该是任何人想要使用这种倒退和危险的做法的警告。 – 2011-04-14 20:14:27
在堆栈上分配内存不是“坏”,因为它的大小合理,函数不是递归的,并且不需要返回指向内存的指针。最好避免这样的一揽子陈述,因为他们会误导没有经验的人,相信这是绝对的规则。在所有情况下避免堆栈分配将导致不必要的堆使用,这是较慢的。 – Tyler 2014-05-21 02:39:26