我希望传递一组结构地址指针,这些地址具有不同的大小和访问结构成员。但是通过传递结构对象数组,数据是不规则的,库函数正在给出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;
}
}
答案 0 :(得分:4)
你的函数需要一个指向结构的指针(可能是连续内存中的许多谎言之一)。
这应该分配足够的内存,这是单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(你必须预先形成),并且我将指针定义与其初始化联合起来。