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

标签 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;
        }
}

最佳答案

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

这应该分配足够的内存,这是单个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/

相关文章:

关于scanf和数组的C编程

c - 如何有效地将一 block 内存与单个字节进行比较?

C 编程 -> 链表和结构

.net - 有没有成熟的 C 框架?

php - 如何在一列中向数据库中插入多个数据

javascript - 对数组中的选定项目进行排序 (javascript)

c - 使用指针将 char 分配给 char*

c - 这些声明有什么区别?

Java:有效的数据结构来存储没有 'logical' 重复项的对象

c# - 为什么 C# System.Decimal (decimal) "waste"位?