2

看这个例子!



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

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

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

非常感谢!!!

4

4 回答 4

8

没有错误。您正在询问并获取平台上指针的大小。

指针所指向的内存块的大小一般是不可能得到的,以后需要的时候必须自己记住。

于 2010-03-19T14:58:53.850 回答
2

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

于 2010-03-19T15:03:29.173 回答
1

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

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

于 2010-03-19T14:59:30.490 回答
1

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

于 2010-03-19T14:59:51.457 回答