2013-03-12 3 views
2

char *a=new char[1000]과 같이 힙에 무언가를 선언하고 주 프로그램이 delete[] 호출이 없으면 할당 된 메모리에서 어떤 일이 발생할지 중단합니다. 힙에 남아 있거나 자동으로 할당이 해제됩니까?C++ 힙 메모리 할당/할당 해제

+2

약간의 용어 : ** 선언 ** 및 ** 정의 ** 이름, 여기에 'a'등. ** 힙에 ** 객체를 할당합니다. 음, 공식적으로, "무료 스토어",하지만 아무도 그것을 부릅니다. –

+0

duplicate of http://stackoverflow.com/questions/6727383/dynamically-allocated-memory-after-program-termination – Saqlain

+2

@PeteBecker : 사람들이 "C++에 힙이 없다"고 언급 할 때 내 사용자 정보에서 인용 할 수 있습니까? 그래서 나는 당신의 질문에 대답하기를 거부한다. –

답변

8

C++에 관한 한, 그 일은 완전히 정의되지 않았습니다. 그러나 거의 모든 합리적인 운영 체제는 프로세스가 종료 될 때 할당 된 메모리를 정리합니다. 그러나 자신을 정리하는 것은 아주 좋은 습관입니다.

0

정상적으로 OS에 의해 정리됩니다.

0

어떤 이유로 응용 프로그램이 충돌하거나 중단되면 OS는 정상적인 경우 메모리를 회수합니다. 그러나 이것은 정의되지 않았습니다. C++ 표준을 지정하면 main()에서 반환 직후 "종료"무엇

2

- 그것은 전역 개체가이 후 어떤 점에서 파괴되는 것을 설명 않습니다이 atexit() 및 다른 "우리가 그만 둘 것"수준의 기능도 main 후 실행하세요 보고. 그러나 프로그램이 살고있는 메모리는 C++ 표준에 의해 지정되지 않습니다. 힙 내용에도 동일하게 적용됩니다.

시스템에 OS가있는 경우 응용 프로그램을 지우려면 OS가 결정합니다 (C++에서는 OS가 있어야한다고 지정하지 않습니다).