CodeBlocks .exe已停止工作

时间:2015-03-25 10:36:19

标签: c++

我的.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;

}

1 个答案:

答案 0 :(得分:2)

你没有正确初始化实例变量&#34; pos&#34;班级&#34; Stack&#34;。这意味着最初它可以具有任何价值。如果该值超出了&#34; employeeList&#34;的范围,则表示您正在访问不属于您的内存区域。这可能是一个分段错误。