|
정확하고 쉬운답변 감사합니다. ^^
열씸! 님이 쓰신 글 :
: new 든 malloc 이든 GlobalAlloc 이든 동적 할당한 메모리는 프로그램의 종료와 함께 해제됩니다.
: 이는 가상보호메모리 시스템에서 당연히 지원되어야 할 부분이고, 정상적인 운영체제라면 그렇게 작동합니다.
: 과거에는 그렇지 못한 운영체제도 있었고, 가령 Windows2000 이하 에서 ReleaseDC가 제대로 안된다든지
: 운영체제들이 가지는 자체적인 자원 반환률을 떨어뜨리는 버그들은 존재하지요.
: 그럼에도 불구하고 열심히 해제하는 버릇을 들여야 하는것은, 해당모듈을 DLL로 싸서 다른 모듈위에 얹는다든지
: 단독 실행화일이 아닌 형태로 가공할 가능성을 두고 있기 때문이죠.
: OS별로 메모리특성에 대해서는 특별히 정리된 자료들이 없어 스스로 조사해 두어야합니다.
: 버전마다 모델마다 버그가 있을 수 있고, 특별한 공유 자원들도 있으니까요.
:
: 궁금하시면
: 프로젝트를 하나 여시고 작업관리자를 띄우신 다음에 할당된 메모리를 주시하시고
: 한 줄 짜 보세요.
: char a = new char[100000000]; 100 메가 할당입니다.
: 그리고 실행하시면
: 사용메모리가 100메가 이상 증가 할꺼고
: 종료하시면 해제 없이도 문제없이 반환되는걸 볼 수 있습니다.
:
: 조상진 님이 쓰신 글 :
: : 커널 객체 이외에는 메모리에 남는것 아니었나요.. ㅇㅅㅇ)?
: :
: : 여태 이렇게 알고 있었는데요..;;
: :
: : 좀더 자세히 설명좀 부탁드려요 __);
|