考虑以下(C11)代码:
void *ptr = aligned_alloc(4096, 4096); ... // do something with 'ptr' ptr = realloc(ptr, 6000);
由于ptr
指向的内存具有4096字节的对齐aligned_alloc
,是否(读取:是否保证)在(成功)调用之后保持该对齐realloc
?或者内存可以恢复为默认对齐?
对齐不与指针保持一致.当您调用realloc时,您只能依赖realloc保证的对齐方式.您需要使用aligned_alloc来执行任何重新分配.