我必须 mallocate SLIST_HEADER 吗?

Do I have to mallocate SLIST_HEADER?

指南 "Using Singly Linked Lists" 在调用 InitializeSListHead() 之前使用 _aligned_malloc 分配 SLIST_HEADER 结构。是否要求列表头结构放在堆上?我的意思是,它是用 DECLSPEC_ALIGN(16) 声明的(在 Win64 上),编译器会将它放在所需的 16 字节边界上,不是吗?

这里的赠品是图书馆的组合。 SLIST 部分来自 Windows 本身(不假定 C/C++),而 _aligned_malloc 来自 MSVCRT。由于 SLIST 代码甚至无法假设使用了 MSVCRT,因此它不知道内存来自何处。

因此,无论您(或编译器)以何种方式对齐内存,或者您的语言如何调用特定类别的内存,都无关紧要。 (您的 "heap" 很可能不是 HeapAlloc 意义上的 Windows 堆)