Gibt es wirklich keine Version von realloc(), die Ausrichtung unterstützt?

Lesezeit: 2 Minuten

Benutzer-Avatar
einpoklum

Es gibt mehrere aufeinander abgestimmte Versionen des Ehrwürdigen malloc()z.B:

#include <stdlib.h>
int posix_memalign(void **memptr, size_t alignment, size_t size);
void *aligned_alloc(size_t alignment, size_t size);

#include <malloc.h>
void *memalign(size_t alignment, size_t size);

(mit Ursprung in POSIX, glibc bzw. Linux libc). Aber – ich kann anscheinend keine Erwähnung einer Version von finden realloc() was die Ausrichtung unterstützt. Wurde es wirklich nie umgesetzt? Es scheint ziemlich trivial, die Funktionalität von nicht ausgerichteten zu kombinieren realloc() mit der Suche nach einem ausgerichteten Teil des Speichers im ausgerichteten malloc() Varianten.

Verwandt:

Behält realloc die Speicherausrichtung von posix_memalign bei?

  • @PeterJ: Willst du damit sagen, dass die ausgerichteten Zuordnungsfunktionen gespeichert werden? weniger Informationen als was malloc() spart? Ich bezweifle es sehr … wie auch immer, wenn Sie dies etwas konkretisieren können, vorzugsweise mit einem Link zu einigen dieser Diskussionen, posten Sie bitte eine Antwort.

    – einpoklum

    4. August 2017 um 10:39 Uhr


  • @PeterJ: Die Liste aber? …

    – einpoklum

    4. August 2017 um 11:04 Uhr


  • @AndrewHenle: Ziemlich trivial, wenn Sie sich auf der Innenseite der Zuweisung befinden, nicht auf der Außenseite.

    – einpoklum

    6. August 2017 um 21:05 Uhr

  • @TonyTannous: Danke für das Kopfgeld, Freund 🙂

    – einpoklum

    6. August 2017 um 21:07 Uhr

  • @TonyTannous: Ich habe gerade gefragt Dies

    – einpoklum

    6. August 2017 um 21:12 Uhr

Benutzer-Avatar
jakoudbz

Aligned realloc ist nur in Microsoft mit implementiert _aligned_realloc Funktion. Es ist keine POSIX-Version definiert und keine Implementierung in Linux. Ich habe jedoch nie verstanden warum, weil es nicht so kompliziert zu programmieren scheint glibc. Ich denke, es ist eine Frage der Zeit, bis jemand es in Anbetracht des Aufkommens breiter SIMD-Anweisungen implementiert.

Weisen Sie im Moment einfach einen neuen Block ausgerichteten Speichers zu, kopieren Sie den Inhalt und geben Sie den alten Zeiger frei. Dies sollte Ihre Anwendung sowieso nicht verlangsamen.

1229070cookie-checkGibt es wirklich keine Version von realloc(), die Ausrichtung unterstützt?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy