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.退化成指针了。
求高人指点。 展开
char *p=NULL;
p= malloc(4);
for(i=0;i<4;i++)
scanf("%x",&p[i]);
sizeof(p);//结果为4.退化成指针了。
求高人指点。 展开
4个回答
展开全部
malloc分配的内存大小,当然C运行库是有存储这个值的,但你并不能使用它,也不能用正常的方式得到它。它的存在只为了free的时候能够正常的释放。
所以建议只有,代码是你写的,malloc了多少你自己必然是知道的,没有必要去查这个信息。
所以建议只有,代码是你写的,malloc了多少你自己必然是知道的,没有必要去查这个信息。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
如果是char *p 可以用strlen(p)来量,其他的类型计算长度,就没什么太大意义了吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p = (char)malloc(4);
4*sizeof(*p);
试试
4*sizeof(*p);
试试
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不是太明白你得问题。
一般用malloc分配地址的时候需要设置分配的大小,你这里就是4个char型的数据,而char型是1个字节的,所以就是4了。这个大小返回的是字节数。
补充一下,这个大小默认是以字节为单位,如果你的类型是浮点的,应该是这样:
float *p;
p= (float*)malloc(4*sizeof(float));
这样分配的才是4个浮点数据内存。
这个指针的内存块大小就是4*sizeof(float)
一般用malloc分配地址的时候需要设置分配的大小,你这里就是4个char型的数据,而char型是1个字节的,所以就是4了。这个大小返回的是字节数。
补充一下,这个大小默认是以字节为单位,如果你的类型是浮点的,应该是这样:
float *p;
p= (float*)malloc(4*sizeof(float));
这样分配的才是4个浮点数据内存。
这个指针的内存块大小就是4*sizeof(float)
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询