Должен ли я неправильно размещать SLIST_HEADER?

Гид «Использование односвязных списков» использования _aligned_malloc выделить структуру SLIST_HEADER перед вызовом InitializeSListHead() в теме. Требуется ли, чтобы структура заголовка списка помещалась в кучу? Я имею в виду, это объявлено с DECLSPEC_ALIGN(16) (на Win64) компилятор поместил бы его на требуемую 16-байтовую границу, не так ли?

0

Решение

Дешевая распродажа здесь — соединение библиотек. Часть SLIST происходит от самой Windows (не предполагает C / C ++), в то время как _aligned_malloc исходит из MSVCRT. Поскольку код SLIST не может даже предполагать, что MSVCRT используется, он не знает, откуда взялась память.

Поэтому не имеет значения, каким образом вы (или компилятор) выравниваете память, или как ваш язык называет определенную категорию памяти. (Ваша «куча» скорее всего не куча Windows в HeapAlloc смысл слова)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]