所以,我的程序面临一个非常非常不寻常的问题。这是我的程序
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),并使用了这三个变量。我面临的问题是,一旦尝试在 for 循环中初始化变量b ,就会出现分段错误。我使用 gdb 对其进行了调试,当我尝试在 for 循环中使用变量b时,头指针的值发生了变化。相反,如果我使用以前使用过的变量,例如 m 或 a 而不是为 for 循环创建一个新变量,它运行得非常好。头指针的地址不会改变。关于这里可能发生什么的任何线索?