我无法弄清楚为什么这些代码行会导致我的程序崩溃。该程序没有编译或构建错误,我没有理由发生崩溃。
void systemutskrift() {
int *i = new int;
string Filnavn[7];
string overskrift[7];
Filnavn[0] = "trykk_kokekjele.txt";
Filnavn[1] = "temperatur_varmtvannstank.txt";
Filnavn[2] = "nivå_færskvannstank.txt";
Filnavn[3] = "styrbord_ballast.txt";
Filnavn[4] = "babord_ballast.txt";
Filnavn[5] = "nivå_dieseltank.txt";
Filnavn[6] = "oversikt_oksygentanker.txt";
overskrift[0] = "Trykk i Kokekjele [BAR]";
overskrift[1] = "Temperatur i Varmtvannstank [C]";
overskrift[2] = "Nivå i Ferskvannstank [L]";
overskrift[3] = "Styrbord Ballasttank [% full]";
overskrift[4] = "Babord Ballasttank [% full]";
overskrift[5] = "Nivå i Dieseltank [L]";
overskrift[6] = "Oversikt Oksygentanker";
ofstream systemutskrift;
ifstream innfil;
string line;
systemutskrift.open("system.txt");
for (*i = 0; *i < 7; *i++) {
systemutskrift << setw(20) << overskrift[*i] << endl;
systemutskrift << endl;
innfil.open(Filnavn[*i]);
if (innfil.is_open()) {
while (getline(innfil, line)) {
systemutskrift << line << endl;
}
}
innfil.close();
}
systemutskrift.close();
system("system.txt");
system("pause");
system("cls");
}
答案 0 :(得分:0)
我认为你错过的是postfix(++)运算符的优先级高于dereference(*)运算符。
因此,你的程序所做的是它有效地首先递增指针,然后尝试取消引用它。这可能会导致您尝试访问您不允许访问的内存,从而导致其崩溃。
您可以通过使用括号来指明您的首选操作顺序,即(* i)++来解决此问题。
可以找到有关优先顺序的进一步说明here