C程序 malloc函数

[复制链接]
查看11 | 回复4 | 2011-8-15 17:37:58 | 显示全部楼层 |阅读模式
#include#includeint main(){ int *p ,*q ; int i
; q=p=(int *)malloc(12) ; for(i=0;i#includeint main(){int *p ,*q , *r; int i
;r = q=p=(int *)malloc(12) ;for(i=0;i<3;i++) { scanf("%d",p++); }for(i=0;i<3;q++,i++){printf("%d\n",*q); }free(r);}...
回复

使用道具 举报

千问 | 2011-8-15 17:37:58 | 显示全部楼层
第一次循环后,p越界指向别的地方。第二次循环,q越界。最后,释放p或q无从释放。释放一块刚申请的连续内存,只要free(p)一次就可以了(p指向该快内存的首地址处)。...
回复

使用道具 举报

千问 | 2011-8-15 17:37:58 | 显示全部楼层
哇。。。回去我也试一试,以前也碰到过,不过我就没有用指针自增我直接用加的 把scanf("%d",p++);改成scanf("%d",p+i); 输出也是 printf("%d\n",*(p+i));应该是这样。。具体的忘记了。。。。我是将它看成数组来弄的。...
回复

使用道具 举报

千问 | 2011-8-15 17:37:58 | 显示全部楼层
malloc(12*sizeof(int))...
回复

使用道具 举报

千问 | 2011-8-15 17:37:58 | 显示全部楼层
楼上正解...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行