سؤال

Consider the following (C11) code:

void *ptr = aligned_alloc(4096, 4096);
... // do something with 'ptr'
ptr = realloc(ptr, 6000);

Since the memory that ptr points to has a 4096-byte alignment from aligned_alloc, will it (read: is it guaranteed to) keep that alignment after a (successful) call to realloc? Or could the memory revert to the default alignment?

هل كانت مفيدة؟

المحلول

The alignment is not kept with the pointer. When you call realloc you can only rely on the alignment that realloc guarantees. You'll need to use aligned_alloc to perform any reallocations.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top