Ich verwende Marshal.GlobalHAlloc
, um Speicher zuzuweisen. In der Dokumentation heißt es: "Diese Methode macht die Win32 LocalAlloc-Funktion von Kernel32.dll verfügbar." GlobalAlloc
's Dokumentation sagt, es wird 8 Byte ausgerichtet sein, aber LocalAlloc
nichts über Ausrichtung sagen.Wie Speicher mit einer 16-Byte-Ausrichtung zuweisen?
Zum Beispiel möchte ich 1024 Bytes zuweisen und sicherstellen, dass es um 16 ausgerichtet ist. Wird es funktionieren, wenn ich 1024 + 16 Bytes zuordnen dann überprüfe ich Zeiger% 16? Wenn das Ergebnis 0 ist, bedeutet dies, dass der Speicher ausgerichtet ist. Wenn es nicht 0 ist, werde ich den Zeiger nur erhöhen, um meinen Erwartungen zu entsprechen. Das Problem ist, ich weiß nicht, wenn ich einen ausgerichteten Zeiger habe, ist es wirklich im physischen Speicher ausgerichtet?