I got an Interview question , What happens when we allocate large chunk of memory using malloc()
inside an infinite loop and don't free()
it.
I thought of checking the condition with NULL
should work when there is no enough memory on heap and it should break the loop , But it didn't happen and program terminates abnormally by printing killed
.
Why is this happening and why it doesn't execute the if
part when there is no memory to allocate (I mean when malloc() failed) ? What behavior is this ?
My code is :
#include<stdio.h>
#include<stdlib.h>
int main(void) {
int *px;
while(1)
{
px = malloc(sizeof(int)*1024*1024);
if (px == NULL)
{
printf("Heap Full .. Cannot allocate memory \n");
break;
}
else
printf("Allocated \t");
}
return 0;
}
EDIT : gcc - 4.5.2 (Linux- Ubuntu -11.04)