如何在C中获取动态分配的二维数组的长度

ami*_*far 5 c size pointers multidimensional-array

问题是如何在C中获得动态分配的2D数组的长度?我认为下面的代码应该获得行数,但事实并非如此.

char** lines;
/* memory allocation and data manipulation */

int length; //the number of rows

length = sizeof(lines)/sizeof(char*);
Run Code Online (Sandbox Code Playgroud)

有什么想法吗?

Mar*_*iot 6

您无法获得C(2D或其他)中动态分配的数组的长度.如果您需要该信息,请在最初分配内存时将其保存到变量(或至少是计算它的方式),并将指针传递给内存和内存的大小.

在你的测试用例中,sizeof返回类型的大小lines,因此你的长度计算相当于sizeof(char**)/sizeof(char*)并且可能1总是具有微不足道的结果.