我有这个功能:
static pair_t * // not visible outside this file
pair_new(const int key)
{
pair_t *pair = malloc(sizeof(pair_t));
if (pair == NULL) {
// error allocating memory for pair; return error
return NULL;
} else {
printf("key is %d\n",key);
*(pair->key) = key;
*(pair->count) = 1;
pair->next = NULL;
return pair;
}
}
但我试图取消引用对实例的关键元素的方式是给我一个seg错误。我认为这是因为'pair'是指针。
对结构定义如下:
typedef struct pair {
int *key; // search key for this item
int *count; // pointer to data for this item
struct pair *next; // children
} pair_t;
有关如何正确更改key
值的任何建议都将非常感谢
答案 0 :(得分:3)
不,pair
没有问题,key
(以及count
也是如此)。指针未初始化使用,调用undefined behavior。
您正在尝试取消引用key
*(pair->key) = key;
没有为key
分配有效内存,因此取消引用会调用UB。您需要先将内存分配给key
,然后才能使用它。同样适用于count
。