gpt4 book ai didi

c - 可变长度数组如何在 C 中对齐?

转载 作者:行者123 更新时间:2023-12-01 13:48:18 26 4
gpt4 key购买 nike

在 C99 中使用什么逻辑来对齐可变长度数组 (VLA)?

我正在考虑为具有未知对齐要求的任意对象在堆栈上分配存储空间,因此需要最严格的对齐方式。我宁愿避免 alloca() 而使用 (char) VLA,因为它们更标准化。

我对 GCC 的测试未能证明它们在小于 16 字节的任何内容上对齐。

最佳答案

VLA 的排列方式与普通阵列相同。

这意味着如果您想直接访问该整数,分配 char 数组并将 int 存储到其中是行不通的。

您可以使用 _Alignof 来确定类型的对齐方式并手动计算所需的调整,但即便如此,它充其量也是定义的实现。

我相信您可能必须在编译器上禁用严格别名才能使其正常工作。

关于c - 可变长度数组如何在 C 中对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34046882/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com