कई गठबंधन संस्करण मौजूद सम्मानित malloc()
की, उदा .:क्या वास्तव में realloc() संरेखण का समर्थन करने का कोई संस्करण नहीं है?
#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, glibc और लिनक्स libc क्रमशः में उद्भव)। लेकिन - मुझे realloc()
के संस्करण का कोई उल्लेख नहीं दिख रहा है जो संरेखण का समर्थन करता है। क्या यह वास्तव में कभी लागू नहीं किया गया है? गठबंधन malloc()
रूपों में स्मृति के गठबंधन खंड की खोज के साथ गैर-गठबंधन realloc()
की कार्यक्षमता को गठबंधन करना बहुत छोटा लगता है।
संबंधित:
Does realloc keep the memory alignment of posix_memalign?
हां। कई कारणों से कोई नहीं है। एक यह है कि आवंटित आवंटित कार्य गठित ब्लॉक के डेटा आकार के बारे में जानकारी नहीं सहेजते हैं और डेटा की कोई प्रति संभव नहीं है। यह एप्लिकेशन डेवलपर को छोड़ दिया गया था। इसके कई कारण थे, कई वर्षों पहले बहुत सक्रिय रूप से चर्चा की गई - विवरण –
@ पीटरजे के लिए उपयुक्त मेलिंग सूची अभिलेखागार देखें: क्या आप कह रहे हैं कि गठबंधन आवंटन फ़ंक्शंस 'malloc() 'सेव की तुलना में _less_ जानकारी को सहेजते हैं? मुझे बहुत संदेह है ... वैसे भी, अगर आप इसे और अधिक मांस कर सकते हैं, तो उस चर्चा के कुछ लिंक के साथ बेहतर, कृपया एक उत्तर पोस्ट करें। – einpoklum
कम नहीं। फोरम के लिए विषय बहुत जटिल है। स्पष्टीकरण के लिए मेलिंग सूची अभिलेखागार ब्राउज़ करें। –