我有几个关于管理对齐内存块的问题,希望能得到跨平台的答案。但是,由于我相信跨平台的解决方案并不存在,所以我主要关心Windows和Linux,Mac OS和FreeBSD则次之。
如何最好地获得一个在16字节边界上对齐的内存块?(我知道使用
malloc()
的简单方法,分配一些额外的空间,然后将指针移动到正确对齐的值。不过,我希望有更少巧妙的方法。另外,下面还有其他问题。)如果我使用普通的
malloc()
,分配额外的空间,然后将指针移动到正确对齐的位置,是否有必要保留块开头的指针以便释放?(在Windows上,在块中间调用free()
似乎可以正常工作,但我想知道标准说什么,即使标准说你不能这样做,它是否在所有主要操作系统上都可以正常工作。我不关心像DS9K这样的鲜为人知的操作系统。)这是困难/有趣的部分。在保留对齐的情况下,重新分配内存块的最佳方法是什么?理想情况下,这将比调用
malloc()
、复制,然后在旧块上调用free()
更智能。我希望能够就地执行。
realloc
,它几乎总是会调用malloc
和memcpy
,所以不必担心尝试找到解决方案。 - R.. GitHub STOP HELPING ICE