获取C中动态分配的数组的长度

kra*_*117 3 c

可能重复:
函数参数中的数组长度

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

我试过了:

sizeof(ptr)
sizeof(ptr + 100)
Run Code Online (Sandbox Code Playgroud)

他们没有工作.

Fel*_*ano 23

你不能.您必须将长度作为参数传递给您的函数.指针的大小是包含地址的变量的大小,这是您找到的4(32位地址空间)的原因.


And*_*rsK 5

由于malloc只返回一块内存,你可以在块中添加额外信息,告诉数组中有多少元素,如果你不能添加一个告诉数组大小的参数,那就是一种方法

例如

char* ptr = malloc( sizeof(double) * 10 + sizeof(char) );
*ptr++ = 10;
return (double*)ptr;
Run Code Online (Sandbox Code Playgroud)

假设你可以在PHP之前读取数组,这是一种我不熟悉的语言.