Die Anleitung "Using Singly Linked Lists" verwendet _aligned_malloc
, um die Struktur SLIST_HEADER vor dem Aufruf von InitializeSListHead()
darauf zuzuweisen. Ist es erforderlich, dass die Listenkopfstruktur auf dem Heap platziert wird? Ich meine, es ist mit DECLSPEC_ALIGN(16)
deklariert (auf Win64), würde der Compiler es auf eine erforderliche 16-Byte-Grenze setzen, nicht wahr?Muss ich SLIST_HEADER mallocate?
0
A
Antwort
0
Das Giveaway hier ist die Mischung von Bibliotheken. Der SLIST-Teil stammt von Windows selbst (nimmt nicht C/C++ an), während _aligned_malloc
von dem MSVCRT stammt. Da der SLIST-Code nicht einmal davon ausgehen kann, dass MSVCRT verwendet wird, weiß er nicht, woher der Speicher stammt.
Es spielt also keine Rolle, auf welche Weise Sie (oder der Compiler) den Speicher ausrichten oder wie Ihre Sprache eine bestimmte Kategorie von Speicher aufruft. (Ihr "Heap" ist wahrscheinlich kein Windows Heap im HeapAlloc
Sinne des Wortes)
Ich verstehe nicht, warum Sie Heap-Zuordnung mit Speicherausrichtung kontrastieren. Es ist nicht so, dass diese beiden Konzepte jemals konkurrieren. Welche Frage möchten Sie wirklich stellen? – IInspectable
Die eigentliche Frage ist - Gibt es einen bestimmten Grund, dieses C++ Beispiel verwendet malloc() für den Header? –