我什么时候应该使用_aligned_malloc()?

时间:2008-09-24 06:13:51

标签: c++ visual-c++

我一直在阅读在自定义内存池系统中调用的遗留代码,然后我发现代码使用_aligned_malloc。我想知道这个功能是什么,我何时才能使用它。


谢谢你们所有人。

我确实阅读过MSDN,但我想要的答案是“想要某个对齐的原因的一个例子是在x86上使用带有SSE指令集的数据,其中数据必须与多个16”对齐。

我终于理解了这些代码的含义。再次感谢。

3 个答案:

答案 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