Google에서 예외를 사용하지 않는 Google C++ 코딩 표준을 읽었습니다. 예외가 사용되지 않으면 프로그램에서 오류가 발생할 때 메모리를 어떻게 비 웁니 까?C++ 프로그램이 충돌 할 때 자동으로 메모리를 해제합니까?
예를 들어 f()는 g()를 호출하고 g()에 오류가 있으면 g()에 할당 된 모든 메모리를 비운 다음 f()에 예외를 호출해야합니다. f()가 예외를 잡으면 f()는 f()에 할당 된 모든 메모리를 해제하고 프로그램을 종료합니다.
예외가 사용되지 않고 g()에 오류가 있으면 exit(0)
을 강제 종료 할 수 있으며 할당 된 모든 메모리를 확보 할만큼 C++ 프로그램이 스마트합니까? 내 생각 엔, C++은 스택과 힙을 유지하고, 일단 프로그램이 종료되면 C++은 스택과 힙을 모두 자동으로 해제 할 것입니까?
일반적으로 메모리를 회수하는 OS입니다. –
전체 프로세스가 충돌 한 다음 예, 메모리가 OS에서 해제됩니다. 어떤 언어로 프로그램을 작성했는지에 관계없이. – clamp
예외를 금지하면 C++이라고 주장하는 것은 다소 사기성이 있습니다. 그것은 당신의 운전자에게 차를 제공하는 것과 같지만 그가 연료를 사용하지 않는 경우에만합니다. –