2017-12-20 15 views
-1

enter link description here 푸시와 팝을 함께 사용하면 출력 제한 초과 오류가 발생합니다.이 코드를 확인하십시오. 클래스 스택을 만들었고 함수 내에서 스택에 대한 포인터를 만들었습니다.출력 한도가 C++ 클래스를 초과했습니다

+0

질문에 코드를 추가하십시오. 미래에 링크가 죽어 다른 사람에게이 질문을 쓸모 없게 만들 수도 있습니다. [묻는 방법] (https://stackoverflow.com/help/how-to-ask) 및 [MCVE] (https://stackoverflow.com/help/mcve)를 읽어보십시오. –

답변

0

코드에서 아래 줄에 포인터를 초기화하지 않았습니다.

void Stack::down() 
{ 
    Stack *s1; 
    //..... 
} 

이 명령문 실행의 동작은 정의되지 않습니다.

Windows에서이 명령문 실행은 런타임 예외를 발생시킵니다. 그러나 다른 플랫폼에서는 프로그램이 다르게 동작 할 수 있습니다. 웹 사이트의 IDE가 다른 플랫폼에서이 프로그램을 실행 중일 수 있으며 해당 플랫폼이 상위 멤버 변수의 부적절한 값으로 인해 코드 일부만 실행될 수 있습니다. 따라서 출력 버퍼가 용량을 초과합니다.

내 의견으로는, 아래 루프가 무한히 실행되고 있습니다.

while(!(s1->isEmpty())) 
{ 
    int temp=s1->pop(); 
    push(temp); 
    printf("\n%d\t",temp); 
} 

이 포인터를 초기화하면 프로그램이 올바르게 실행됩니다.