ör .:Gerçekten, realloc() desteklenmesini destekleyen bir sürümü yok mu?
#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);
(POSIX'e sırasıyla glibc'nin ve Linux libc orjinli), saygıdeğer malloc()
birkaç hizalanmış versiyonlarını Orada mevcuttur. Ancak - Hizalamayı destekleyen realloc()
versiyonundan bahsedilmiş gibi görünmüyor. Gerçekten hiç uygulanmadı mı? Hizalanmamış realloc()
'un hizalı malloc()
değişkenlerinde hizalanmış bir yığın bellek arayışını birleştirmek oldukça kolay görünüyor.
İlgili:
Does realloc keep the memory alignment of posix_memalign?
Evet. Birçok nedenden ötürü yoktur. Bir tanesi, sıralı tahsis edilmiş fonksiyonların, hizalanmış bloğun veri boyutu hakkında bilgi kaydetmemesi ve hiçbir veri kopyasının mümkün olmamasıdır. Uygulama geliştiricisine bırakıldı. Birçok yıl önce çok aktif bir şekilde tartışılan birçok neden vardı - ayrıntılar için uygun posta listesi arşivlerine bakın –
@PeterJ: Hizalanmış tahsis işlevleri, 'malloc()' kaydedilenden daha fazla _pay bilgi sakladığını mı söylüyorsunuz? Şüphe ediyorum ki ... şüphesiz, eğer bunu biraz daha tartışabilirseniz, bu tartışmanın bir kısmıyla bağlantı kurabilirsiniz, lütfen bir cevap gönderin. – einpoklum
Daha az değil. Konu forum için çok karmaşık. Açıklama için posta listesi arşivlerine göz atın. –