malloc函数的使用求指导!

intmain()
{
int*p=(int*)malloc(1*4);
p[0]=1;
p[1]=2;
p[2]=3;
for(inti=0;i<3;i++){
printf("%d\n",p[i]);
}
return0;
}
上边的代码明明是申请了四个字节的内存,为什么可以存放12个字节的内容?
BIG阳
浏览 303回答 2
2回答

叮当猫咪

内存越界了。内存访问越界是一个未定义行为。含有未定义行为的程序什么都可能发生。===========你可以尝试一下在return之前free(p);。

杨魅力

内存越界,c不会检查你使用内存是否超过边界,不光是写入12字节,写入1000字节都可以,只是会破坏heap,导致程序发生不可预测的错误。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript