一道动态内存分配问题,请教
#include <stdio.h>#include <stdlib.h>
int main(void)
{
int i;
int a[5]={1,2,3,4,5};
int *b=(int *)malloc(5);
if(b==NULL){
printf("oh\n");
exit(1);
}
for(i=0;i<5;i++){
b[i]=a[i];
}
for(i=0;i<5;i++){
printf("%d\n",b[i]);
}
return 0;
}
请问这里哪一句有问题啊
为什么这样的程序也能运行啊,加上了free(b)才会报错