Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
#include <stdlib.h>
#include <stdio.h>

int main(void) {
  size_t  size = 10;
  size_t align = 1 << 12;
  float *ptr;
  double *ptr1;

 if(posix_memalign((void **)&ptr, align , 48);

 if ((ptr1 = realloc((int *)ptr, size)) == NULL != 0) {
   exit(0);
 }

 ptr[0] = 12.5;
 ptr[1] = 25.5;
 
printf("memory aligned to %d bytes\n\n",align);
 printf("ptr[0]   : %p = %f\n",ptr, ptr[0]);
 printf("ptr[1]   : %p = %f\n\n",&ptr[1], ptr[1]);

if((ptr1 = realloc((int *)ptr, 1024)) == NULL) {
exit(0);
}

printf("After realloc(): \n");
 printf("ptr1[0]   : %p = %lf\n",ptr1, ptr[0]);
 printf("ptr1[1]  : %p = %lf\n\n",&ptr1[1], ptr1[1]);
 printf("The value at ptr[1] remains the same after realloc()\n");
 printf("ptr[1]   : %p = %f\n",((float *)ptr1+1),*((float *)ptr1+1));
 free(ptr1);
 return 0;
}

produces the following (unexpected) output.

...