gpt4 book ai didi

c - malloc 边界大小 : is there a performance difference

转载 作者:太空宇宙 更新时间:2023-11-04 05:52:31 27 4
gpt4 key购买 nike

我的 C 初学者类(class)上有注释说 malloc 返回一个指向与 x86 机器上的 16 字节边界对齐的 block 的指针。

这是否意味着调用 malloc(1) 没有优势,即性能与调用 malloc(16) 没有区别?

最佳答案

C标准说

The pointer returned if the allocation succeeds is suitably aligned so that it may be assigned to a pointer to any type of object with a fundamental alignment requirement and then used to access such an object or an array of such objects in the space allocated (until the space is explicitly deallocated).

所以指针对齐不是16字节,而是实现定义的;在你的实现中,碰巧有某些类型的对象需要在内存中进行 16 字节对齐;因此 malloc 返回的指针是 16 字节对齐的。

但这并不意味着 char *p = malloc(1) 分配了 16 个字节的内存 - 相反,您不能触及任何内存超越p[0]malloc 也需要一些内部簿记,因此 malloc(1) 总共消耗 16 字节的内存,而 malloc(16)会消耗 32 或 64;你不会知道的。

关于c - malloc 边界大小 : is there a performance difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371394/

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