我如何返回我用malloc分配的指针的大小?

看这个例子!

int main( int argc, char ** argv ) { int *ptr = malloc(100 * sizeof (int)); printf("sizeof(array) is %d bytes\n", sizeof(ptr)); } 

printf函数只返回4个字节! 怎么了?

非常感谢!!!

没有错误。 您要求并获得平台上指针的大小。

通常不可能获得指针所指向的内存块的大小,如果以后需要它,您必须自己记住它。

在某些平台上有“msize”函数,它返回malloc / calloc / strdup分配的区域的大小。 但这不是标准的。

您无法打印收到的内存块的大小。 malloc分配您请求的所有内存,也可以不分配(并返回NULL )。

sizeof()运算符执行您的请求:它告诉您指针的大小 – 指针本身占用内存中的4个字节。

没有错,这是32位平台上任何指针的大小。