【发布时间】:2016-05-31 11:43:17
【问题描述】:
我正在用 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 的简单分配如何会引发分段错误。
【问题讨论】:
-
我们真的需要一个规范的副本来表示“我尝试通过未初始化的指针存储东西”。如果我们能立即关闭这些常见问题解答,那就太好了。我会考虑制作一些社区维基。
-
帮自己和大家一个忙:总是用
gcc -Wall -Werror编译。 -
哇...感谢您的提醒,但没必要成为那个严厉的伙伴。抱歉,如果这个问题毁了社区,我只是认为 SO 是一个论坛,人们来到论坛主要是因为问题。 ://
-
哎哟。 -5 真的合理吗?请不要以显而易见的理由投反对票。这个问题提出的很清楚,也很好。加一。
标签: c pointers segmentation-fault priority-queue