Linux Kernel 将移除可变长数组

Linux
pigsrollaroundinthem (39396)发表于 2018年10月29日 21时01分 星期一
来自free部门
内核开发者 Kees Cook 递交了移除可变长数组的 pull request, Linux 4.20 或 5.0 将不再依赖于可变长数组。可变长数组(variable length array,简称 VLA)是指数组对象的长度在运行时而不是编译时确定。但使用 VLA 会存在问题,包括增加运行时开销——因为数组长度需要在运行时确定; LLVM Clang 编译器不支持结构内 VLA,它只支持 C99 风格的 VLA;存在安全隐患。Linus Torvalds 对 VLA 的使用公开表达过不赞成,认为相比固定长度,VLA 产生了更多的代码和更慢的代码。