Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3920049
  • 博文数量: 356
  • 博客积分: 10458
  • 博客等级: 上将
  • 技术积分: 4734
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-24 14:59
文章分类

全部博文(356)

文章存档

2020年(17)

2019年(9)

2018年(26)

2017年(5)

2016年(11)

2015年(20)

2014年(2)

2013年(17)

2012年(15)

2011年(4)

2010年(7)

2009年(14)

2008年(209)

分类: C/C++

2008-05-14 17:24:01

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));

阅读(3740) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~