C 中的可变长度数组:揭穿的神话
C 中的可变长度数组 (VLA) 的前景一直是争论的主题多年来。虽然 VLA 已成为 C99 标准的组成部分,但它们在 C 中的存在仍然是一个问号。
C99 规范明确允许声明可变长度数组,其中数组的大小未在编译时而是在执行期间动态确定。然而,C 对 VLA 的立场并不那么简单。
C 11 标准虽然深受 C99 的影响,但没有为 VLA 提供明确的支持。虽然它包含引用 C99 的介绍性文本,但这并不意味着 C99 中的每个功能都会自动合并到 C 中。 C 11 建立在 C99 的基础上,添加了自己独特的功能和扩展。
因此,尽管 C99 中存在 VLA,但 C 11 不支持变长数组。此限制归因于 VLA 需要动态内存分配,这可能会导致内存管理问题和潜在的安全风险。因此,C 选择了替代方案,例如使用指针或容器(如向量)动态分配数组,以提供动态内存分配的有效处理。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3