-1
我做了一个节目,当我调试崩溃,并显示我的错误:C++异常抛出
异常在PROJECT1.EXE在0x0FC93AA8(vcruntime140d.dll)抛出:0000005:访问冲突读取位置0x8BADB618。
如果有这种异常的处理程序,程序可能会安全地继续。
任何想法可能是什么?
#include <iostream>
#include <string>
#include <fstream>
#include <iostream>
using namespace std;
class bendraAbonentoInformacija
{
public:
string vardasPavarde;
string asmensKodas;
string adresas;
double suma;
string tiekejas;
};
class elektra : public bendraAbonentoInformacija
{
public:
double tarifas;
int skaitiklisNuo;
} rect;
class siuksles : public bendraAbonentoInformacija
{
public:
int kvadratura;
};
class vanduo : public bendraAbonentoInformacija
{
public:
int saltasVanduo;
int sildymas;
};
void nuskaitymas(int& i, bendraAbonentoInformacija masyvas[], elektra elektrosMasyvas[], siuksles siuksliuMasyvas[], vanduo vandensMasyvas[])
{
ifstream duomenuNuskaitymas;
duomenuNuskaitymas.open ("duomenys.txt");
string vardasPavarde;
string asmensKodas;
string adresas;
double suma;
string tiekejas;
int tarifas;
double skaitliukas;
int kvadratura;
int saltasVanduo;
int sildymas;
i = 0;
if (duomenuNuskaitymas.is_open())
{
while (!duomenuNuskaitymas.eof())
{
duomenuNuskaitymas >> masyvas[i].vardasPavarde >> masyvas[i].asmensKodas >> masyvas[i].adresas >> masyvas[i].suma >> masyvas[i].tiekejas;
if (masyvas[i].tiekejas == "Vilniaus energija")
{
duomenuNuskaitymas >> elektrosMasyvas[i].tarifas >> elektrosMasyvas[i].skaitiklisNuo;
}
else if (masyvas[i].tiekejas == "Kauno svara")
{
duomenuNuskaitymas >> siuksliuMasyvas[i].kvadratura;
}
else if (masyvas[i].tiekejas == "Rokiskio vandenys")
{
duomenuNuskaitymas >> vandensMasyvas[i].saltasVanduo >> vandensMasyvas[i].sildymas;
}
i++;
}
duomenuNuskaitymas.close();
}
else cout << "Unable to open file";
}
void PaieskaPagalAsmensKodaIrRikiavimas(int i, bendraAbonentoInformacija masyvas[])
{
string AsmensKodas;
bendraAbonentoInformacija abonentas[1000];
bendraAbonentoInformacija Kintamasis;
int k = 0;
cout << "Iveskite asmens, kurio saskaitos ieskote, asmens koda: ";
cin >> AsmensKodas;
cout << "Rasta informacija:" << endl;
for (int j = 0; j < i; j++)
{
if (AsmensKodas == masyvas[j].asmensKodas)
{
cout << masyvas[j].vardasPavarde << masyvas[j].adresas << masyvas[j].asmensKodas << masyvas[j].suma;
abonentas[k] = masyvas[j];
k++;
}
}
for (int i = 0; i < k; i++)
{
if (abonentas[i].suma < abonentas[i + 1].suma)
{
Kintamasis = abonentas[i];
abonentas[i] = abonentas[i + 1];
abonentas[i + 1] = Kintamasis;
}
}
for (int i = 0; i < k; i++)
{
cout << abonentas[i].vardasPavarde << abonentas[i].suma;
}
}
int main()
{
int i;
bendraAbonentoInformacija masyvas[1000];
elektra elektrosMasyvas[1000];
siuksles siuksliuMasyvas[1000];
vanduo vandensMasyvas[1000];
nuskaitymas(i, masyvas, elektrosMasyvas, siuksliuMasyvas, vandensMasyvas);
//PaieskaPagalAsmensKodaIrRikiavimas(i,masyvas);
return 0;
}
我可能会在这里超过语言障碍,但没有输入文件很难重现。 –
您可能会尝试将有问题的代码放入try {...} catch(...){}块中,但我认为您应该找出访问冲突的原因。由于您已经调试过程序,您是否可以在程序中标记导致访问冲突的行? – chtz