You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

适配数组参数(Conformant Array Parameters)是否属于变长数组(VLA)?

聊聊CERT安全编码标准里的API05-C:适配数组参数

作为常年跟C代码打交道的开发者,我一直很看重CERT安全编码标准里的各项规则,其中API05-C:鼓励使用适配数组参数是我在日常开发中落实得最多的建议之一。

适配数组参数到底是什么?给大家举个直观的示例:

void foo(int length, char data[length]);

这种写法能让函数明确知晓传入数组的长度,比传统的char data[]或者char* data写法更安全、语义也更清晰。

我在大量项目代码里都应用了这个特性,不过考虑到部分老编译器不支持该特性,还专门写了宏来做兼容处理,确保代码在不同编译环境下都能正常运行。关于适配数组参数的更多细节,API05-C里有非常详尽的说明。

另外得提一句,很多编译器不支持变长数组(VLA)其实是有合理原因的——C11标准已经把变长数组从强制要求的特性降级为可选特性了,毕竟VLA在内存管理、栈溢出风险等方面确实存在不少问题,编译器厂商会根据自身定位和应用场景选择是否支持。

内容的提问来源于stack exchange,提问作者nemequ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:45:32