The following program passes a misaligned address to the realloc() function.
int main (int argc, char *argv[])
{
char *s, *bad_s, *realloc_s;
/* Get some memory */
s = malloc(sizeof(int)*64);
/* Reallocate memory using a misaligned address */
bad_s = s + 8;
realloc_s = realloc(bad_s, sizeof(int)*256));
return 0;
}
In a similar fashion, MemoryScape detects realloc() problems caused by passing addresses to memory sections whose memory your program cannot free. For example, MemoryScape detects problems if you try to do any of the following: