Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
看这个例子!
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)。
malloc
NULL
运算符按您的sizeof()要求执行:它告诉您指针的大小 - 指针本身在内存中占用 4 个字节。
sizeof()
没有错,这是 32 位平台上任何指针的大小。