我的.exe编译良好的程序在CodeBlocks中运行后停止工作, 在选择的选项之后,在将cin>> f.name输入控制台后停止 我有一个Windows 8,我使用GNU GCC编译器这里是代码,也许有代码错误,我不知道 坦克引起你的注意 :
using namespace std;
struct employee
{
string name;
int age;
};
employee employeeList[10];
class Stack
{
int pos;
public:
Stack(){};
void push(employee e)
{
employeeList[pos] = e;
pos++;
}
employee pop(int n)
{
if(n = pos - 1)return employeeList[pos];
if(n < pos - 1)
{
return employeeList[pos];
for(int j =n; j < pos; j++ )
{
employeeList[pos] = employeeList[pos + 1];
}
}
pos--;
}
string print(int n)
{
n = pos;
cout<<employeeList[pos].name<<endl;
}
char menu()
{
char choice;
cout << "Press 1. to push an employee"<<endl;
cout << "Press 2. to pop an employee"<<endl;
cout << "Press 3. to show an employee"<<endl;
cin>> choice;
return choice;
}
};
int main()
{
Stack s;
char input = s.menu();
int j;
do
{
switch(input)
{
case '1' :{employee f; cin>>f.name; s.push(f);}break;
case '2' :{int n; cin>>n; s.pop(n);} break;
case '3' :{int n; cin>>n; s.print(n);}break;
}
j++;
}
while(j < 10);
return 0;
}
答案 0 :(得分:2)
你没有正确初始化实例变量&#34; pos&#34;班级&#34; Stack&#34;。这意味着最初它可以具有任何价值。如果该值超出了&#34; employeeList&#34;的范围,则表示您正在访问不属于您的内存区域。这可能是一个分段错误。