C - malloc and arrays confusion
===

I was trying to grasp the malloc function in C, and I wrote the following code:

    int i;

    int *arr = (int*)malloc(5*sizeof(int)); 

    if(arr==NULL){

	  printf("Failed to allocate memory for arr...\n");
	  exit(1);

    }

I thought this meant that only 5 elements could be added to the array. To test out if that was true, I added the following code:

    arr[0] = 1;
	arr[1] = 2;
	arr[2] = 3;
	arr[3] = 4;
	arr[4] = 5;
	arr[5] = 6;
	arr[6] = 7;
	arr[7] = 8;
	arr[8] = 9;

	for(i=0;i<9;i++){

		printf("%d\n",arr[i]);

	}

Surprisingly, that code compiled and ran perfectly. How was that possible?