Ich schaffe eine Prioritätswarteschlangenstruktur in C.Segmentierungsfehler in einfache Zuordnung
der Struktur:
#define MAXCOUNT 10
typedef int array[MAXCOUNT+1];
typedef struct {
int Count;
array items;
} PriorityQueue;
Die Initialisierungsfunktion:
void Initialize(PriorityQueue *PQ)
{
PQ->Count=0;
}
Der Haupt:
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;
}
Das Problem ist, whe Wenn ich es starte, bekomme ich einen Segmentierungsfehler. Mit gdb habe ich herausgefunden, dass es auf die Initialisierungsfunktion geworfen wird. Es verwirrt mich, wie eine einfache Zuweisung eines int
einen Segmentierungsfehler werfen könnte.
Wir brauchen wirklich ein kanonisches Duplikat für "Ich versuche, Sachen durch einen nicht initialisierten Zeiger zu speichern". Wäre schön, wenn wir diese FAQ sofort schließen könnten.Ich werde versuchen, ein Community-Wiki zu erstellen. – Lundin
Tun Sie sich und allen einen Gefallen: ** immer ** kompilieren mit 'gcc -Wall -Werror'. –
Wow ... Danke für die Köpfe, aber keine Notwendigkeit, dieser harsche Kumpel zu sein. Tut mir leid, wenn diese Frage die Community ruiniert hat, ich dachte nur, dass SO ein Forum war und die Leute meistens wegen Problemen zu den Foren kommen. :/ – Drunky