C语言中怎么得到一个指针所指的空间的大小,如:char *p=(char *)malloc(10*sizeof(char));

我再怎么通过p得到p所指的空间是10*sizeof(char)呢?sizeof(p)应该是4不是10,sizeof(*p)应该是1。怎么办?... 我再怎么通过p得到p所指的空间是10*sizeof(char)呢?sizeof(p)应该是4不是10,sizeof(*p)应该是1。怎么办? 展开
 我来答
金色潜鸟
2013-04-14 · TA获得超过3.2万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:5662万
展开全部
char *p=(char *)malloc(10*sizeof(char)); 我们知道 是 10。但我们没有简单方法能获得“10”。

通过 calloc, malloc, realloc 分配的空间 (实际消耗的Heap空间) 用 函数
size_t _msize( void *memblock ); 可以获得。
获得的字节数,可能大于10。估计原因同 分配结构空间类似,考虑对齐或考虑什么,要多用去一点空间。

#include<stdio.h>
#include <malloc.h>
main(){
char *p=(char *) malloc(10*sizeof(char));
printf("%d",_msize(p));
}

我的编译器编译运算结果,输出 是 16。
百度网友3903741
推荐于2018-04-11 · TA获得超过1211个赞
知道大有可为答主
回答量:1551
采纳率:85%
帮助的人:557万
展开全部
"通过 calloc, malloc, realloc 分配的空间 (实际消耗的Heap空间) 用 函数
size_t _msize( void *memblock ); 可以获得。
具体如下:
#include<stdio.h>
#include <malloc.h>
main(){
char *p=(char *) malloc(10*sizeof(char));
printf(""%d"",_msize(p));}
编译器编译运算结果,输出 是 16。"
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xubpy
2013-04-13
知道答主
回答量:10
采纳率:0%
帮助的人:3.7万
展开全部
只能10*sizeof(char)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
caichengpan
2013-04-13 · TA获得超过182个赞
知道小有建树答主
回答量:241
采纳率:0%
帮助的人:178万
展开全部
得不到的,定义常量吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式