Wie weisen Sie Speicher zu, der an einer bestimmten Grenze in C ausgerichtet ist (z. B. Cacheleitungsgrenze)? Ich suche nach einer malloc/free-ähnlichen Implementierung, die idealerweise so portabel wie möglich wäre - zumindest zwischen 32- und 64-Bit-Architekturen.Zuweisen und Freigeben von ausgerichtetem Speicher in C
Bearbeiten Hinzufügen: Mit anderen Worten, ich bin auf der Suche nach etwas, das sich wie (die jetzt obsolete?) memalign Funktion, die mit freien befreit werden kann.
Haben Sie diese zwei Antworten auf SO überprüft: http://stackoverflow.com/questions/227897/solve-the-memory-alignment-in-c-interview-question-that-stumped-me/227900#227900 und http://stackoverflow.com/questions/1855896/memory-alignment-on-modern-processors? –
Nicht ganz was ich suche. Ich möchte etwas, das mehr wie malloc funktioniert, gibt einen Wert zurück, der der ausgerichtete Zeiger ist, dann haben Sie eine andere Funktion, die frei ist, die auf diesem Zeiger aufgerufen wird. Wenn Sie eine Lösung wie die von Ihnen angegebenen anwenden, müssen Sie entweder zwei Werte umleiten oder die Ausrichtung neu berechnen, wann immer sie benötigt wird. Ich suche etwas Ähnliches wie memalign. Danke, dass du diese Antworten aussuchst. – fuad
Es gibt 'posix_memalign()' auf entsprechenden Maschinen - hat eine andere Schnittstelle als 'memalign()'. –