> > Hi Everyone, > > int > main () > { > int *p; > int i; > > p = (int *) malloc (400 * sizeof (int)); > for (i = 0; i < 512; i++) > { > p[i] = i; > printf ("p[%d]: %d\n", i, p[i]); > } > return 0; > } > > The following code should terminate with Segmentation fault, right ? > But when I tried, it works even beyond the limits of allocated area ... > I am using Glibc - 2.3.2-11.9 , gcc - 3.2.2 > > Is it a bug - malloc's implementation in Glibc. > Does malloc allocates a complete 4k page for certain size of memory asked > for? > > Infact, it gives a segmentation fault at 1681 location => > p[1681]: 1681 > Segmentation fault > > Or is it using Heap area ?
First why do you think this is a GCC bug? Second you are invoking undefined behavior by accessing passed the array bounds (or allocated bounds by malloc). -- Pinski