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。怎么办?
展开
4个回答
展开全部
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。
通过 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。
展开全部
"通过 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。"
size_t _msize( void *memblock ); 可以获得。
具体如下:
#include<stdio.h>
#include <malloc.h>
main(){
char *p=(char *) malloc(10*sizeof(char));
printf(""%d"",_msize(p));}
编译器编译运算结果,输出 是 16。"
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
只能10*sizeof(char)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
得不到的,定义常量吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询