问题
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?
回答1:
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.
来源:https://stackoverflow.com/questions/20314602/does-realloc-of-memory-allocated-by-c11-aligned-alloc-keep-the-alignment