标签: 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个字节! 有什么问题?
非常感谢!!!
答案 0 :(得分:8)
没有错。您要求并获得平台上指针的大小。
通常不可能获得指针所指向的内存块的大小,如果以后需要它,你必须自己记住它。
答案 1 :(得分:2)
在某些平台上有“msize”函数,它返回malloc / calloc / strdup分配的区域的大小。但这不是标准的。
答案 2 :(得分:1)
您无法打印收到的内存块的大小。 malloc可以分配您请求的所有内存,也可以不分配(并返回NULL)。
malloc
NULL
sizeof()运算符执行您的请求:它告诉您指针的大小 - 指针本身在内存中占用4个字节。
sizeof()
答案 3 :(得分:1)
没有错,这是32位平台上任何指针的大小。