gpt4 book ai didi

c - 简单赋值中的段错误

转载 作者:行者123 更新时间:2023-11-30 21:20:30 24 4
gpt4 key购买 nike

我正在用 C 创建优先级队列结构。

结构:

#define MAXCOUNT 10
typedef int array[MAXCOUNT+1];

typedef struct {
int Count;
array items;
} PriorityQueue;

初始化函数:

void Initialize(PriorityQueue *PQ)
{
PQ->Count=0;
}

主要:

int main (void) {
PriorityQueue* PQ;
Initialize(PQ);

Insert(2, PQ);
Insert(3, PQ);
Insert(5, PQ);
Insert(1, PQ);
Insert(12, PQ);
Insert(6, PQ);
Insert(10, PQ);

printPQ(PQ);

return 0;
}

问题是,当我运行它时,出现段错误。使用gdb,我发现它是在初始化函数上抛出的。让我感到困惑的是,简单的 int 赋值会引发段错误。

最佳答案

It baffles me how a simple assignment of an int could throw a segmentation fault.

好吧,先看一下!

在您的 Initialize() 函数中,当您尝试访问 PQ 时,并未为其分配有效内存。在解除引用之前,您需要为 PQ 分配适当的内存。否则,尝试访问无效内存会调用 undefined behavior .

关于c - 简单赋值中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37544818/

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