c-调整malloc指针



malloc不允许任意对齐。我们自己也可以这样做,但我们最终会得到一个不同的指针位置。免费需要原件。

有没有什么方法可以通知malloc新指针,这样它就可以自我调整,而不必存储旧指针/偏移量?

C11引入了支持指定对齐的aligned_alloc。它的实现定义了支持哪些对齐,但在POSIX上,它应该像posix_memalign(3)一样,支持sizeof(void*)的倍数的任何二次幂。

还要考虑,如果常规malloc就足够了。对于所有分配,CCD_ 5具有CCD_ 6的对准。

如果C11不可用,则存在posix_memalign(3)。如果您在Windows上,则有一个以MSVC 2015开头的_aligned_alloc,或者使用VirtualAlloc并分配一个页面对齐的缓冲区。

如果这两种方法都不起作用,您将不得不在malloc之上推出自己的解决方案。获取下一个对齐的地址,保存前两个字节的对齐方式。调用免费包装器时,获取前面的2个字节,从指针中减去它们并释放结果。

好吧,我相信C11有这样一个野兽

Defined in header <stdlib.h>
void *aligned_alloc( size_t alignment, size_t size );

相关内容

  • 没有找到相关文章

最新更新