.exit()

    exit 함수는 모든 static 객체를 파괴하고, 모든 버퍼를 방출(flush) 하며, 모든 I/O 채널을 닫고, 프로그램을 종료하면서 atexit() 함수를 호출한다. 만약 함수가 atexit()에 전달되면 예외가 발생하고 terminate() 가 호출된다.



.abort()


   어떠한 종료작업없이 프로그램을 즉시 종료한다.



 Stack Unwinding 이 일어나지 않기 때문에 이 함수는 로컬 객체를 파괴하지 않는다. 모든 로컬 객체의 소멸자가 호출되는 것을 확실히 하기 위해서는 예외를 사용하거나 main()으로 돌아가서 종료하기 위해 정상적인 반환 매커니즘을 사용해야한다.



 주의 : exit는 atexit에 전달되면 예외가 발생한다고 한다. 그램 스택풀기가 진행이 되면서 로컬객체도 파괴되지 않겠는가? 위 설명은 abort에 국한된 설명인가? 책이 좀 오묘하게 써놓았다.

Post to Twitter