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

时间:2010-03-19 14:57:46

标签: c malloc sizeof

请参阅此示例!



int main( int argc, char ** argv )
{
    int *ptr = malloc(100 * sizeof (int));

    printf("sizeof(array) is %d bytes\n", sizeof(ptr));
}

printf函数只返回4个字节! 有什么问题?

非常感谢!!!

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:2)

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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