gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 06:17:32 26 4
gpt4 key购买 nike

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com