C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[52026] Re:Re:Re:메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요???
열씸! [cappuccino] 1464 읽음    2008-01-23 15:58
new 든 malloc 이든 GlobalAlloc 이든 동적 할당한 메모리는 프로그램의 종료와 함께 해제됩니다.
이는 가상보호메모리 시스템에서 당연히 지원되어야 할 부분이고, 정상적인 운영체제라면 그렇게 작동합니다.
과거에는 그렇지 못한 운영체제도 있었고, 가령 Windows2000 이하 에서 ReleaseDC가 제대로 안된다든지
운영체제들이 가지는 자체적인 자원 반환률을 떨어뜨리는 버그들은 존재하지요.
그럼에도 불구하고 열심히 해제하는 버릇을 들여야 하는것은, 해당모듈을 DLL로 싸서 다른 모듈위에 얹는다든지
단독 실행화일이 아닌 형태로 가공할 가능성을 두고 있기 때문이죠.
OS별로 메모리특성에 대해서는 특별히 정리된 자료들이 없어 스스로 조사해 두어야합니다.
버전마다 모델마다 버그가 있을 수 있고, 특별한 공유 자원들도 있으니까요.

궁금하시면
프로젝트를 하나 여시고 작업관리자를 띄우신 다음에 할당된 메모리를 주시하시고
한 줄 짜 보세요.
char a = new char[100000000]; 100 메가 할당입니다.
그리고 실행하시면
사용메모리가 100메가 이상 증가 할꺼고
종료하시면 해제 없이도 문제없이 반환되는걸 볼 수 있습니다.

조상진 님이 쓰신 글 :
: 커널 객체 이외에는 메모리에 남는것 아니었나요.. ㅇㅅㅇ)?
:
: 여태 이렇게 알고 있었는데요..;;
:
: 좀더 자세히 설명좀 부탁드려요 __);

+ -

관련 글 리스트
52016 메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요??? 이범상 1013 2008/01/22
52017     Re:메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요??? 열씸! 1532 2008/01/22
52020         Re:Re:메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요??? 조상진 1274 2008/01/23
52026             Re:Re:Re:메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요??? 열씸! 1464 2008/01/23
52036                 Re:Re:Re:Re:메모리 해제 하지 않고 프로그램이 종료되면 어떻게 되나요??? 이범상 1623 2008/01/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.