【问题标题】:Does malloc takes care of memory allignment?malloc 是否负责内存对齐?
【发布时间】:2018-09-01 04:11:50
【问题描述】:

我使用 malloc 分配了 5 个字节的内存,并且我能够使用这 5 个字节来存储字符或整数。 例如,使用第一个字节存储一个字符,然后使用接下来的四个字节存储一个整数。 malloc 如何处理内存对齐问题?

【问题讨论】:

    标签: c malloc system-calls


    【解决方案1】:

    malloc

    如果分配成功,则返回一个指向最低(第一个)字节的指针 在为任何对象适当对齐的已分配内存块中 输入。

    所以内存块对于任何对象类型都是对齐的。

    使用第一个字节存储一个字符,接下来的四个字节存储 存储一个整数。

    这是无效的。您需要将 char 和 integer 捆绑在一个结构中(可能包括填充),或者为它们提供 2 个单独的内存块。或者将它们序列化(这是另一个问题)。

    【讨论】:

    • 为什么无效?
    • 获取地址到第二个字节。对它进行类型转换,然后用它来存储一个整数。它正在工作。
    • @HarikrishnaPatibandla 这是未定义的行为。它似乎工作的事实是无关紧要的。
    猜你喜欢
    • 2018-07-22
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-06-27
    • 2013-12-14
    • 2015-05-19
    • 2015-03-22
    • 2015-05-07
    相关资源
    最近更新 更多