11

我一直在阅读遗留代码,其中涉及定制的内存池系统,然后我发现代码使用了_aligned_malloc。我想知道这个功能是什么,我什么时候必须使用它。


感谢大家。

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

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

4

3 回答 3

12

当内存分配的对齐对您很重要时,此功能很有用。

对齐是指返回的指针的数值必须能被某个数整除,即。((unsigned int)ptr) % alignment应评估为 0。

需要某种对齐的一个示例是在 x86 上将数据与 SSE 指令集一起使用,其中数据必须与 16 的倍数对齐。

于 2008-09-24T06:31:05.557 回答
7

这是您可能涉及的一个用例。在我 17 年的 C/C++ 开发中,我只需要一次_aligned_malloc()(WinOS 实现)和memalign(POSIX 实现)内核函数,那是在编写低级磁盘 I/O 时。这样做的原因是,当不使用 OS I/O 缓冲区(例如在 WinOSopenfile()中使用FILE_FLAG_NO_BUFFERING标志调用)和读/写磁盘时,操作系统需要内存块与磁盘扇区大小对齐;如果磁盘扇区大小为 512 字节,并且您想将 1234 字节写入磁盘,我会执行以下操作:

_aligned_malloc(1234, 512);
于 2012-12-28T11:49:49.430 回答
0

你检查过 MSDN 文档吗?您可以在此处找到相应的条目 。

于 2008-09-24T06:17:42.393 回答