内存分配c中的结构指针数组

时间:2017-02-16 13:26:17

标签: c arrays data-structures

我希望传递一组结构地址指针,这些地址具有不同的大小和访问结构成员。但是通过传递结构对象数组,数据是不规则的,库函数正在给出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;
        }
}

1 个答案:

答案 0 :(得分:4)

你的函数需要一个指向结构的指针(可能是连续内存中的许多谎言之一)。

这应该分配足够的内存,这是单struct datadevice_count的内存:

struct data *device_info = malloc(sizeof(*device_info) * device_count);
ipbt_database_manager_get_device_info(device_info, "all", device_count);

我省略了检查NULL(你必须预先形成),并且我将指针定义与其初始化联合起来。