2011-12-17 3 views
3

Windows 7에서 Visual C++을 사용하고 있으며 오류 오류가 발생합니다. Runtime Check Failure # 2 - 'manager'변수 주위의 스택이 손상되었습니다. 무엇이 해결책일까요?런타임 검사 실패 # 2 - 'manager'변수 주위의 스택이 손상되었습니다! getchar() 사용 후에도 출력 화면이 멈추지 않습니다.

#include <iostream> 
using namespace std; 

class employee 
{ 
    char name[30]; 
    float age; 
public: 
    void getData(void); 
    void putData(void); 
}; 
void employee ::getData(void) 
{ 
    cout<<"entr name"; 
    cin>> name; 
    cout<<"entr age"; 
    cin>>age; 
} 
void employee ::putData(void) 
{ 
    cout<<"name:"<< name<<endl; 
    cout<<"age"<<age<<endl; 
} 
const int size=3; 
int main() 
{ 
    employee manager[size]; 
    for(int i=0; i<size; i++) 
    { 
     cout <<endl<<"details of manager "<<i++<<endl; 
     manager[i].getData(); 
    } 
    cout<<endl; 
    for(int i=0;i<size;i++) 
    { 
     cout<< endl << "manager "<< i++ << endl; 
     manager[i].putData(); 
    } 
    getchar(); 
    return 0; 
} 
+1

을 의미하고 당신은 여전히 ​​대신'표준 : string'의 문자 배열을 사용하고 있습니다 : 그래서 여기 당신의 의도를 생각이야? 왜? 그'cin >> name'은 기다리고있는 버퍼 오버 플로우입니다. – fredoverflow

답변

7
employee manager[size]; 
for(int i=0; i<size; i++) 
{ 
    cout <<endl<<"details of manager "<<i++<<endl; 
    // PROBLEM IS HERE ----------->> ^^^^^ 
    manager[i].getData(); 
} 

마지막 반복에 난을 증가하는 경우는 크기와 동일하게하고 manager[i]이 (가) 범위를 벗어났습니다. 나는 당신이 경계선을 벗어날뿐만 아니라 홀수 위치에서 관리자를 건너 뛰기 때문에 루프 안에서 나는 증가시키지 않는다는 것을 의미한다고 생각합니다.

같은
for(int i=0; i<size; i++) 
{ 
    cout <<endl<<"details of manager "<<i<<endl; 
    manager[i].getData(); 
} 

당신은 윈도우 7에있어 ​​다른 루프

+0

20 초 ... 괜찮습니다 ... :) – Mysticial

+0

@ 신비주의 : 20 초가 무엇입니까? :) –

+0

당신은 20 초 정도 나를 이겼습니다. – Mysticial

관련 문제