Bri*_*uez 8 c arrays pointers memory-alignment
我已经通过为中间数组分配空间以及1个大块中的实际元素来实现锯齿状多维数组.在处理这个问题时,我认为我必须考虑到存储元素的对齐,以防万一.但是我不确定是否需要进行这种安全检查,所以我要问:指针的大小是否会保持对齐任何其他类型?
简而言之:给定一个来自malloc调用的连续内存空间,如下所示:
| ARRAY OF POINTERS | ALIGN PADDING | ARRAY OF AN ARBITRARY ELEMENT TYPE |
Run Code Online (Sandbox Code Playgroud)
当第一个数组由指针构成时,我真的需要填充吗?是否有必要填充的情况?
C 标准没有明确保证对象指针具有最严格的对齐要求。在某些系统上,long double
可能有更严格的对齐要求;在其他系统上,函数指针可能有更严格的对齐要求。
然而,只要稍加注意,您就可以确定对齐要求。您需要决定答案的便携性和自动化程度。通过编译代码并找到答案,很容易找到答案。创建一种万无一失的自动方法来自动为任何类型执行此操作要困难得多,尤其是因为任意元素类型可能大于或小于对象指针。
归档时间: |
|
查看次数: |
245 次 |
最近记录: |