2012-10-09 36 views
0

可能重复:
determine size of dynamically allocated memory in c
newbie questions about malloc and sizeof
How can I get the size of an array from a pointer in C?如何获得动态分配内存的大小(使用malloc或calloc)?

Malloc -> how much memory has been allocated?

int **arrofptr; 
arrofptr = (int **)malloc(sizeof(int *) * 2); 
arrofptr[0] = (int *)malloc(sizeof(int)*6144); 
arrofptr[1] = (int *)malloc(sizeof(int)*4800); 

现在我已经知道了多少字节arrofptr分配,arrofptr [0] ,arrofptr [1]?有什么方法可以知道尺寸吗?

如果我们将打印

sizeof(arrofptr); 
sizeof(arrofptr[0]); 
sizeof(arrofptr[1]); 

然后将打印4

+0

这是特定的实现。例如,当你在Linux内核中时,你可以通过kmalloc获得这些信息:'stuff = kmalloc(1,GFP_KERNEL); printk(“我得到了:%zu字节的内存\ n”,ksize(stuff));'显然只能在Linux内核中工作,您需要获得一个与您正在使用的malloc实现绑定的答案。 – Mike

回答

2

没有,有没有办法找到一个指针多少内存参照。

至少不是在任何系统上,所以没有便携的方式。

+0

感谢您的时间.. –

2

不可以。在不存在使用额外数据的地方存储分配的大小。

+0

谢谢... 是的,你是对的,我们可以使用结构来跟踪大小.... –

相关问题