だから、私は自分のプログラムで非常に珍しい問題に直面しています。これが私のプログラムです
void insertItem (Song *&, Song *&, char ar [], int);
void printList (Song *);
void deleteList (Song *&, Song *&);
void processList (Song *&);
int main (int argc, char * argv[]) {
char * filename = argv[1]; char line [31];
int m, n, a;
------------
/*
Head and tail pointer to maintain a list of songs
*/
Song *head;
Song *tail;
if (filename == NULL)
exit(1);
fstream fio;
fio.open (filename, ios::in);
**fio >> m; fio >> n;**
-----------------------
// Reading the file
while (!fio.eof()){
**fio >> a;**
-------------
fio >> line;
**insertItem (head, tail, line, a);**
-------------------------------------
}
fio.close();
printList (head);
**for (int b = 0; b < n; ++b) processList (head);**
---------------------------------------------------
cout << "\nDeleting List";
deleteList (head, tail);
return 0;
}
3 つの静的変数 (m、n、および a) を宣言し、3 つすべてを使用します。私が直面している問題は、for ループで変数bを初期化しようとするとすぐに、セグメンテーション違反が発生することです。gdb を使用してデバッグしたところ、for ループで変数bを使用しようとすると、ヘッド ポインターの値が変わります。逆に、for ループ用に新しい変数を作成する代わりに、以前に使用した m や a などの変数を使用すると、まったく問題なく実行されます。先頭ポインタのアドレスは変わりません。ここで何が起こっているのか手がかりはありますか?