【发布时间】:2018-09-01 04:11:50
【问题描述】:
我使用 malloc 分配了 5 个字节的内存,并且我能够使用这 5 个字节来存储字符或整数。 例如,使用第一个字节存储一个字符,然后使用接下来的四个字节存储一个整数。 malloc 如何处理内存对齐问题?
【问题讨论】:
标签: c malloc system-calls
我使用 malloc 分配了 5 个字节的内存,并且我能够使用这 5 个字节来存储字符或整数。 例如,使用第一个字节存储一个字符,然后使用接下来的四个字节存储一个整数。 malloc 如何处理内存对齐问题?
【问题讨论】:
标签: c malloc system-calls
如果分配成功,则返回一个指向最低(第一个)字节的指针 在为任何对象适当对齐的已分配内存块中 输入。
所以内存块对于任何对象类型都是对齐的。
使用第一个字节存储一个字符,接下来的四个字节存储 存储一个整数。
这是无效的。您需要将 char 和 integer 捆绑在一个结构中(可能包括填充),或者为它们提供 2 个单独的内存块。或者将它们序列化(这是另一个问题)。
【讨论】: