【发布时间】:2012-09-20 00:38:15
【问题描述】:
我已经动态分配了二维数组。 这是代码
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.
【问题讨论】:
-
不,您只需要自己跟踪。
-
指针的大小通常是
4,这就是你得到4的原因。分配的字节在malloc(...)的参数中,在你的情况下这些是sizeof(int) * 6144和sizeof(int) * 4800... ... ... -
这不是一个二维数组,它是一组分段数组,带有一个指针数组来跟踪它们。有关如何正确动态分配二维数组的信息,read this。另外,你应该never typecast the result of malloc。
标签: c arrays 2d sizeof dynamic-allocation