博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

帅得不敢出门

热爱c++ 博客文章多为转载(帖子后面有带原文链接的)以做收藏 若有误处 望多多赐教
   stupidpig.cublog.cn
关于作者  
姓名:帅得不敢出门
职业:学生
年龄:23
位置:福州
C++群:24372952  3503799
个性介绍:交朋会友

我的分类  




指针访问malloc分配空间时越界的问题
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));

 发表于: 2008-05-14,修改于: 2008-05-14 17:24 已浏览326次,有评论0条 推荐 投诉

  网友评论

  发表评论



Copyright © 2001-2006 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们
页面生成时间:0.01584

京ICP证041476号