C语言怎样求指针指向的内存块的大小? 5

例如:char*p=NULL;p=malloc(4);for(i=0;i<4;i++)scanf("%x",&p[i]);sizeof(p);//结果为4.退化成指针了。... 例如:
char *p=NULL;
p= malloc(4);
for(i=0;i<4;i++)
scanf("%x",&p[i]);

sizeof(p);//结果为4.退化成指针了。

求高人指点。
展开
 我来答
beddy1
2013-02-06 · TA获得超过1989个赞
知道大有可为答主
回答量:2271
采纳率:0%
帮助的人:2200万
展开全部
malloc分配的内存大小,当然C运行库是有存储这个值的,但你并不能使用它,也不能用正常的方式得到它。它的存在只为了free的时候能够正常的释放。
所以建议只有,代码是你写的,malloc了多少你自己必然是知道的,没有必要去查这个信息。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
当年的反应慢
2013-02-06 · TA获得超过637个赞
知道小有建树答主
回答量:612
采纳率:50%
帮助的人:374万
展开全部
如果是char *p 可以用strlen(p)来量,其他的类型计算长度,就没什么太大意义了吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
__烟花已冷
2013-02-07
知道答主
回答量:18
采纳率:0%
帮助的人:5.1万
展开全部
p = (char)malloc(4);

4*sizeof(*p);
试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ncutyuhaitao
2013-02-06 · TA获得超过1070个赞
知道小有建树答主
回答量:607
采纳率:0%
帮助的人:484万
展开全部
不是太明白你得问题。
一般用malloc分配地址的时候需要设置分配的大小,你这里就是4个char型的数据,而char型是1个字节的,所以就是4了。这个大小返回的是字节数。

补充一下,这个大小默认是以字节为单位,如果你的类型是浮点的,应该是这样:
float *p;
p= (float*)malloc(4*sizeof(float));
这样分配的才是4个浮点数据内存。
这个指针的内存块大小就是4*sizeof(float)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式