#include<stdio.h>
int main(){
int * ptr=(int *)malloc(40);
printf("%d",sizeof(ptr));
}当我运行这个的时候,输出是因为8...what正在发生,here...why是输出8吗?
发布于 2013-02-26 15:03:34
sizeof运算符是编译时运算符,在您的机器上,任何指针的大小都是8字节。
无法检索malloc-ed内存区的动态大小。否则你必须知道它,或者把它放在某个地方。
您可以考虑使用Boehm's conservative garbage collector,然后调用GC_malloc而不是malloc,不需要调用free (或GC_free),并且可以使用GC_size(p)从p开始获取先前GC_malloc-ed内存区的大致大小(但我不建议使用GC_size)。
如果在Linux上使用malloc,请学习如何使用valgrind查找内存泄漏bug,以及如何使用gcc -Wall -g进行编译
https://stackoverflow.com/questions/15083231
复制相似问题