如何在C中获取动态创建的结构数组的长度?

bet*_*eta 8 c

我目前正在尝试获取动态生成的数组的长度.它是一个结构数组:

typedef struct _my_data_ 
{
  unsigned int id;
  double latitude;
  double longitude;
  unsigned int content_len;
  char* name_dyn;
  char* descr_dyn;
} mydata;
Run Code Online (Sandbox Code Playgroud)

我像这样初始化我的数组:

mydata* arr = (mydata*) malloc(sizeof(mydata));
Run Code Online (Sandbox Code Playgroud)

然后使用realloc重新调整它并开始用数据填充它.

然后,我尝试使用此处描述的代码来获取其大小.

sizeof(arr) / sizeof(arr[0])
Run Code Online (Sandbox Code Playgroud)

即使我的数组包含两个元素,此操作返回0.

有人可以告诉我我做错了什么吗?

NPE*_*NPE 15

如果您需要知道动态分配的数组的大小,您必须自己跟踪它.

sizeof(arr) / sizeof(arr[0])技术仅适用于编译时已知大小的数组,以及C99的可变长度数组.


das*_*ght 5

sizeof不能用于查找动态分配的内存量malloc.您应该单独存储此数字,以及指向已分配的内存块的指针.此外,每次使用realloc或更新时都必须更新此号码free.