我已收到異常過程中「引發的異常」是接收回路
Exception thrown at 0x70F8516F (vcruntime140d.dll) in Project.exe: 0xC0000005: Access violation writing location 0x723D9C18.
它的用戶定義的信息的最終迭代到一個數組中時的for循環發生:
int k;
cout << "Enter array size:";
cin >> k;
while (k > 3) {
cout << "Array size too big, please reenter" << endl;
cin >> k;
}
Player *ptr = new Player[k];
string n;
int s;
for (int i = 0; k >= i; i++) {
cout << "Enter name" << endl;
cin >> n;
ptr[i].setName(n);
cout << "Enter score" << endl;
cin >> s;
ptr[i].setScore(s);
ptr[i].getName();
ptr[i].getScore();
}
而它引導我到我的setName函數的末尾
void Player::setName(string n) {
name = n;
}
緩衝區溢出。當循環中的「i == k」時會發生什麼? – PaulMcKenzie
在循環中,如果第一次迭代值爲零,則結束條件通常爲'<' (or '>'),而不是'<=' or '> ='。 – Dialecticus
只需在for循環中用'k> i'替換'k> = i'。經典的方法是使用'我
alexolut