Andrew Pinski - Re: Abnormal behavior of malloc in gcc-3.2.2 (original) (raw)

This is the mail archive of the gcc@gcc.gnu.orgmailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]