我想传递具有不同大小和访问结构成员的结构地址指针数组。但是通过传递结构对象数组,数据是不规则的,库函数正在发出 SIGABRT 信号。 这是我的代码的一部分-
struct data *device_info;
device_info = malloc(device_count*sizeof(void );
ipbt_database_manager_get_device_info(device_info, "all", device_count);
这是函数定义-
bool ipbt_database_manager_get_device_info(struct data *dev_info_ptr, char *device_id, int device_count)
{
struct node *current_device_info = first_device_info;
int count = 0;
if (!strcmp(device_id,"all")) {
while (current_device_info != NULL) {
dev_info_ptr[count] = current_device_info->node_data;
count++;
current_device_info = current_device_info->next;
}
}
最佳答案
您的函数需要一个指向结构的指针(可能是连续内存中的许多谎言之一)。
这应该分配足够的内存,这是单个struct data
乘以device_count
的内存:
struct data *device_info = malloc(sizeof(*device_info) * device_count);
ipbt_database_manager_get_device_info(device_info, "all", device_count);
我省略了对 NULL 的检查(你必须执行),并且我将指针定义与其初始化结合起来。
关于c - c中的内存分配结构指针数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42275298/