int main()
{
short *p2 =NULL;
p2 = (short*)malloc(1000);
if(NULL == p2)
{
return;
}
p2[900] = 1;
free(p2);
system("pause");
return 1;
}
malloc函数原型:
Allocates memory blocks.
void *malloc(
size_t size
);
Parameters
size
Bytes to allocate. 分配指定Bytes 而不是sizeof(size*sizeof(short))
所以上面只申请了1000字节的空间
当 p2[900] = 1;时 越界因为其访问的是p2+900*sizeof(short)
良好的编程习惯 加上sizeof p2 = (short*)malloc(1000*sizeof(short));