如何在 Objective C 中对齐内存?

Posted

技术标签:

【中文标题】如何在 Objective C 中对齐内存?【英文标题】:How to align memory in Objective C? 【发布时间】:2014-03-02 20:22:31 【问题描述】:

Apple 建议您在使用 Accelerate Framework 时将数据对齐为 16 字节。您在实践中如何做到这一点?

如果我有一个数组int[10000];,是否有pragma?如何将此对齐到 16 字节?

【问题讨论】:

【参考方案1】:

为了对齐数据,您需要使用#pragma pack。要获得 16 字节对齐,您需要使用:

#pragma pack(push,16) ... your data structure here ... #pragma pack(pop)

我建议您阅读有关对齐的更多信息,因为您最终可能会得到损坏的数据。

【讨论】:

【参考方案2】:

malloc 和朋友总是有 16 字节对齐。支持向量的其他原因。

如果你有一个 int 数组 [10000];那么很可能它不应该是固定大小,而不是在堆栈上,而是使用 malloc 分配的。然后它有 16 字节对齐。

【讨论】:

以上是关于如何在 Objective C 中对齐内存?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C 中分配 32 字节对齐的内存

如何在 C 中分配和释放对齐的内存

如何在 iOS 的 Objective-C 中使用对齐区域编程拖放

如何在 C 中以可移植的方式管理内存对齐和通用指针算法?

如何在C中对齐指针

Objective C:switch inside loop - 如何避免(潜在的)内存泄漏