关于malloc 的问题
这个newarray为什么不能CALL两次?int count=0;
int *newarray(){
int *arr= (int *)malloc(sizeof(int)*9);
int i;
for(i=0; i<=9; i++) arr[i]=count++;
return arr;
}
int main(){
int *a1;
a1 =newarray();
int *a2;
a2 =newarray();
free(a2);
free(a1);
return 0;
}
第一次进入int *newarray()的时候没有问题, 可是a2 =newarray();这句的时候运行到
int *arr= (int *)malloc(sizeof(int)*9);
程序就溃掉了。 注意 for(i=0; i<=9; i++) 这里是会有数据overflow的。(因为前面是只给了9个INT的空间)
程序在visual studio 2005下是没有问题, 但在ubuntu下用gcc就会出现上述的问题。
哪位知道具体是怎么回事吗? 先谢了~