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

2024-12-02 08:36:15
推荐回答(4个)
回答1:

malloc分配的内存大小,当然C运行库是有存储这个值的,但你并不能使用它,也不能用正常的方式得到它。它的存在只为了free的时候能够正常的释放。
所以建议只有,代码是你写的,malloc了多少你自己必然是知道的,没有必要去查这个信息。

回答2:

如果是char *p 可以用strlen(p)来量,其他的类型计算长度,就没什么太大意义了吧

回答3:

p = (char)malloc(4);

4*sizeof(*p);
试试

回答4:

不是太明白你得问题。
一般用malloc分配地址的时候需要设置分配的大小,你这里就是4个char型的数据,而char型是1个字节的,所以就是4了。这个大小返回的是字节数。

补充一下,这个大小默认是以字节为单位,如果你的类型是浮点的,应该是这样:
float *p;
p= (float*)malloc(4*sizeof(float));
这样分配的才是4个浮点数据内存。
这个指针的内存块大小就是4*sizeof(float)