我的C代码有问题,我无法理解 在这里,我尝试使用malloc创建结构指针,但每当我尝试将值设置为创建的结构时,我都会遇到分段错误错误。我使用GDB来确定错误所在的位置,但我对如何解决它没有多少见解。如果有人能让我了解这一点,我会很感激。
这不是完整的代码,而只是重要的部分。
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
typedef struct str_s {
int size;
bool (*func)(const void* a, const void* b);
} *Str; // Cannot change this
Str create(bool (*func)(const void *a, const void *b)) {
MapADT* str = malloc(sizeof(struct mapadt_s));
(*str)->size = 0; // Segmentation Fault here
(*str)->func= func;
return *kv_map;
}
答案 0 :(得分:-1)
这是一个工作版本,segfault来自于你试图两次推导你的str
指针这一事实。此外,您必须返回指向已分配内存的指针而不是值。不要忘记释放分配的内存;)
#include <stdlib.h>
#include <stdio.h>
#include <stdbool.h>
typedef struct str_s {
int size;
bool (*func)(const void* a, const void* b);
} my_struct;
my_struct *create(bool (*func)(const void *a, const void *b)) {
my_struct *str = malloc(sizeof(my_struct));
str->size = 0;
str->func = func;
return str;
}