首先你创建的是一个指针函数 int * two(),所以时间在在物理存储上应该是没有实际位置,额然后你有创建了一个具有实际地址的 int a[2],这会就会出现,计算机不知道将a[2]怎么使用然后放在那儿?
再看第二种还是一样指针函数 int * two(),但是这回你创建的 int *p = (int*)malloca(2*sizeof(int)) 就是跟函数相当于一个性质,都是没有实际物理存储地址的数组,所以当我函数被消灭掉的时候,数组也会跟着函数变化,而第一种则是,函数如果被释放掉了,我数组还在,这样就会报错!