为什么new动态数组超出长度的元素也可以输入?

int *p=new int [2];
cin>>p[3];//一维时。

int(*p)[2];
p=new int [2][2];
cin>>p[3][2];//二维时。
以上为什么都能通过编译!

能输入是你运气好,说明越界后的内存块现在没有进程在使用。否则你程序就挂了。而且你现在的意思只是编译通过,那肯定没问题,程序还没运行的时候,还不知道分配哪块内存呢。