FATAL ERROR: Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT). My code won't run
FATAL ERROR: Thread 1: EXC_BAD_ACCESS (code=EXC_I386_GPFLT). My code won't run
当我 运行 我的程序使用预定输入时,我收到错误消息。可能是什么原因造成的,我该如何解决?
我不知道该怎么办。我研究了关于 Google 的主题,none 的建议足够具体,可以提供帮助。
void alpha_Array(){
std::string nameArr[50];
nameArr[0] = "Reddit";
nameArr[1] = "Facebook";
std::string passArr[50];
passArr[0] = "1";
passArr[1] = "2";
std::stack<std::string> organiser;
std::stack<std::string> passwordStack;
int loops = 1;
organiser.push(nameArr[0]);
passwordStack.push(passArr[0]);
for(int x = 1; x < 50; x++){
loops++;
std::string best = organiser.top();
std::string bestPass = passwordStack.top();
std::string newStr = nameArr[x];
std::string newPass = passArr[x];
if (nameArr[x].empty()){
break;
}
std::string tipTop = alpha_Compare(best, newStr, 0);
if (tipTop == best){
organiser.pop();
organiser.push(newStr);
organiser.push(best);
passwordStack.pop();
passwordStack.push(newPass);
passwordStack.push(bestPass);
}
else{
organiser.push(newStr);
passwordStack.push(newPass);
}
}
for (int x = 0; x < loops; x++){
std::string name = organiser.top();
organiser.pop();
std::string password = passwordStack.top();
passwordStack.pop();
std::cout<<"Name: "<<name<<std::endl<<"Password: "<<password<<std::endl<<std::endl;
}
}
我期待有一个格式化的响应,例如:
姓名:Facebook
密码:1
姓名:Reddit
密码:2
但我得到的是:
姓名:Reddit
密码:1
姓名:Facebook
密码:2
(lldb)
最后的错误。
在您的代码中,循环值将在两次迭代后变为 3。
int loops = 1;
for(int x = 1; x < 50; x++){
loops++;
//...
}
现在在这部分代码中你迭代了 3 次:
for (int x = 0; x < loops; x++) {
std::string name = organiser.top();
organiser.pop();
//...
}
所以当只有 2 个元素时,你弹出堆栈 3 次。
当我 运行 我的程序使用预定输入时,我收到错误消息。可能是什么原因造成的,我该如何解决?
我不知道该怎么办。我研究了关于 Google 的主题,none 的建议足够具体,可以提供帮助。
void alpha_Array(){
std::string nameArr[50];
nameArr[0] = "Reddit";
nameArr[1] = "Facebook";
std::string passArr[50];
passArr[0] = "1";
passArr[1] = "2";
std::stack<std::string> organiser;
std::stack<std::string> passwordStack;
int loops = 1;
organiser.push(nameArr[0]);
passwordStack.push(passArr[0]);
for(int x = 1; x < 50; x++){
loops++;
std::string best = organiser.top();
std::string bestPass = passwordStack.top();
std::string newStr = nameArr[x];
std::string newPass = passArr[x];
if (nameArr[x].empty()){
break;
}
std::string tipTop = alpha_Compare(best, newStr, 0);
if (tipTop == best){
organiser.pop();
organiser.push(newStr);
organiser.push(best);
passwordStack.pop();
passwordStack.push(newPass);
passwordStack.push(bestPass);
}
else{
organiser.push(newStr);
passwordStack.push(newPass);
}
}
for (int x = 0; x < loops; x++){
std::string name = organiser.top();
organiser.pop();
std::string password = passwordStack.top();
passwordStack.pop();
std::cout<<"Name: "<<name<<std::endl<<"Password: "<<password<<std::endl<<std::endl;
}
}
我期待有一个格式化的响应,例如:
姓名:Facebook 密码:1
姓名:Reddit 密码:2
但我得到的是:
姓名:Reddit 密码:1
姓名:Facebook 密码:2
(lldb)
最后的错误。
在您的代码中,循环值将在两次迭代后变为 3。
int loops = 1;
for(int x = 1; x < 50; x++){
loops++;
//...
}
现在在这部分代码中你迭代了 3 次:
for (int x = 0; x < loops; x++) {
std::string name = organiser.top();
organiser.pop();
//...
}
所以当只有 2 个元素时,你弹出堆栈 3 次。