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

我再怎么通过p得到p所指的空间是10*sizeof(char)呢?sizeof(p)应该是4不是10,sizeof(*p)应该是1。怎么办?

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。
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-11
"通过 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。"本回答被网友采纳
第2个回答  2013-04-13
只能10*sizeof(char)
第3个回答  2013-04-13
得不到的,定义常量吧