동적으로 계속 할당되는 객체가 반환되지 않는 경우가 정말 위험한 메모리 릭이고, 한번 할당되고 끝날때까지 전혀 변동이 없는 객체는 메모리 반환을 하지 않아도 큰 문제는 없습니다. (그렇지만 일단 하는게 좋습니다. 기분상...-_-)
2006.09.07 23:27:39 (*.149.156.23)
송군
.NET으로 작성한 프로그램은 프로그램이 끝남과 동시에... 메모리가 반환 된다라고..
카더라 통신에서 들은 기억이 있습니다.
2006.09.08 00:50:55 (*.176.2.147)
자갈공명
메모리릭이 위험한 경우는 프로그램 실행중에 계속 줄줄 새는 경우입니다. ( 메모리사용량이 계속 늘어나서 실행에 무리를 주는 )
운영체제는 프로세스가 할당한 메모리의 모든것을 알고 있기 때문에 해제안하고 종료하더라도 다른프로그램이 그 메모리를 못쓰는 상황은 발생하지 않습니다. 프로세스가 종료하면 해제안된 메모리는 운영체제가 해제합니다.( 허나 찜찜하죠..^^;; )
예를들어 잘못된 포인터로 잘못된 주소의 메모리를 접근했을때 프로그램을 뻣게 만들어서 다른 프로그램을 보호하는 것도 운영체제입니다.
네 이웃의 메모리를 탐했으니 넌 죽어라. 우리는 운영체제의 손바닥안에서 놀고 있는 거죠..
2006.09.08 11:30:01 (*.102.122.211)
안군
자갈공명// 근데, 간혹은 놓치기도 합니다... 특히 dll을 넘나들며 할당하고 사용하고.. 이런 놈들이나, COM영역의 메모리를 할당해놓고 해제 안했다거나, GlobalAlloc 했다거나... 이런 놈들도 왠만하면 해제해주긴 하는데, 가끔(...) 놓칩니다. 어쩌겠습니까. 껐다켜야죠. (후우...)
2006.09.08 12:53:09 (*.189.163.250)
윤원영
제가 알기로는 비트멥 핸들러 같은것은 ->Release() 콜해서 해제해 주지 않은한은 프로그램이 종료되어도 메모리에 남아 잇는 것을 알고 있습니다. DX에서도 그런게 좀 있구요. 비트맵 쓰고 나서 해제해주지 않는 프로그램 만든후 연속해서 실행했다 죽였다 하면 메모리가 모자라져서 바탕하면의 아이콘이 이상해지는등 이상현상이 발생하는 걸로 알고 있습니다. 혹시 모르니 확인좀;;;
2006.09.08 13:00:49 (*.85.37.56)
bard
비트맵 핸들러나 기타등등은 메모리개념이 아닙니다.(따지고 보면 메모리이긴 하지만 ^^)
GDI 리소스 개념이며, 이건 OS에게 명시적으로 반환해주어야 합니다.
안그러면 GDI 리소스가 줄줄사라지면서 아이콘도 날아가고 어쩌구 하다 결국은 시스템을 다운 시키게 됩니다.
2006.09.08 15:31:03 (*.67.220.110)
랩하는좀비
반환이 잘 안되어서 파일을 수정할 수가 없지요. 사용중입니다~~ 라는 표시가 나오더군요.;;
2006.09.09 14:35:23 (*.75.207.247)
윤원영
예전에 2d게임 만들다가 ->Release()이거 않해줘서 낭패본일이 있어서 개념은 어떻든 간에 주의해야 한다는 취지로...
윗분들의 리플을 읽다보면 종료하면 다 해제된다는 오해를 하기 쉬울것 같아서요...
비트맵이나 DX서페이스에 이미지타일을 저장해서 꺼내쓴다던가, 구성중인 이미지를 저장해서 필요할때 쓴다던가
메모리스럽게 쓰거나 했던 경우가 많았었거든요...
메모리 DC를 얻어서 유용하게 많이 쓴적이 있어서
사족이었습니다;;;
2006.09.09 14:37:27 (*.75.207.247)
윤원영
.NET에서 저런것도 가베지 콜렉팅을 잘 처리해주는 지 궁금하네요.
자바나 .NET의 가베지 콜렉팅을 어떻게 하는지 궁금해 지기도 하네요.
스마트포인터같은 warpping을 아예 정형적으로 지원하는 것일것 같은데^^