#include<stdio.h>
#include<stdlib.h>

void main()
{
 
  int *a=(int *)malloc(sizeof(int)*6);

  *a=10;
  *(a+1)=11;
  *(a+2)=12;
  *(a+3)=13;
  *(a+4)=14;
  *(a+5)=15;
  *(a+6)=16;
  *(a+7)=17;
  *(a+8)=18;

  printf(\"%d %d %d %d %d %d %d %d\\n\",a,a+1,a+2,a+3,a+4,a+5,a+6,a+7,a+8,a+9);

  printf(\"%d\\n\",*a);
  printf(\"%d\\n\",*(a+1));
  printf(\"%d\\n\",*(a+2));
  printf(\"%d\\n\",*(a+3));
  printf(\"%d\\n\",*(a+4));
  printf(\"%d\\n\",*(a+5));
  printf(\"%d\\n\",*(a+6));
  printf(\"%d\\n\",*(a+7));
  printf(\"%d\\n\",*(a+8));
}


나지금 이게 왜 컴파일 오류, 워닝이 없는지 이해가 안되

동적할당 할때 sizeof(int)*6 했으면 a에 4바이트짜리공간 6개가 (24바이트) 동적할당 되고

주소값은 그렇다고 쳐도 7번째 값 출력부터는 가비지값 뜨는게 정상인걸로 생각되는데

전부다 정상적으로 출력되네

컴파일러가 알아서 그냥 허용해주는거야?  아니면 내가 포인터를 잘못알고있는거야

비쥬얼스튜디오 2010 윈7 64bit 에서 컴파일했음