我一直在阅读在自定义内存池系统中调用的遗留代码,然后我发现代码使用_aligned_malloc。我想知道这个功能是什么,我何时才能使用它。
谢谢你们所有人。
我确实阅读过MSDN,但我想要的答案是“想要某个对齐的原因的一个例子是在x86上使用带有SSE指令集的数据,其中数据必须与多个16”对齐。
我终于理解了这些代码的含义。再次感谢。
答案 0 :(得分:10)
当您的内存分配对齐对您很重要时,此功能非常有用。
对齐意味着返回的指针的数值必须可以被一定数量整除,即。 ((unsigned int)ptr) % alignment
评估为0。
想要进行某种对齐的原因的一个例子是在x86上使用带有SSE指令集的数据,其中数据必须与多个16对齐。
答案 1 :(得分:5)
以下是您可能涉及的用例。在我17年的C / C ++开发中,我只需要_aligned_malloc()
(WinOS实现)和memalign
(POSIX实现)内核函数,那就是在编写低级磁盘I / O时。原因是当不使用OS I / O缓冲区(例如在WinOS中使用openfile()
标志调用FILE_FLAG_NO_BUFFERING
)并读取/写入磁盘时,操作系统需要内存块与磁盘扇区大小对齐;如果磁盘扇区大小是512字节,你想写1234字节到磁盘我会做这样的事情:
_aligned_malloc(1234, 512);
答案 2 :(得分:0)
您检查过MSDN文档吗? 您可以找到相应的条目 here