만들어 본 메모리 할당 / 해제 소스입니다. 예전에 GP32 어스토 프로그래밍 서포트할때 만들어서 사용했었는 데, 다시 만들어봤습니다.

자세한 설명은 정리를 잘 해서 나중에 강좌란에 올릴 생각이구요, 우선 간단히 정리해 보면...

1. 기본적으로 일정 크기의 메모리를 할당 받아서 그 메모리로 할당과 해제를 하도록 하는 코드

2. 기본적인 알고리즘은 빈 공간(노드) 중에 같거나 비슷한 공간을 찾아서, 할당될 부분과 빈 공간으로 분할한 후에 빈 공간(노드) 부분은 빈공간 리스트에 붙임.

3. 각 노드는 리니어하게 연결시켜둠. (모든 노드는 빈틈없이 연결되어 있기 때문에 다음노드는 별도의 포인터를 사용하지 않고, 현재 노드의 위치와 크기로 계산함. - 용량 절약)

4. 빈 공간(노드)는 빠르게 검색하기 위해서 2의 제곱 수 단위로 링크시켜두고, (용량문제와 효율 문제를 고려해서 그냥 싱글 링크드 리스트로 관리) 찾을 때 적절히 활용

5. 디버깅 모드에선 디버킹 팁 몇가지 사용. (Leak 체크, 메모리 침범 체크)

가볍게 정리하면 이 정도가 핵심 내용이 되겠네요.

사용자 메모리 할당 루틴의 장점이라면 메모리를 직접 관리하기 때문에 메모리의 사용 상황이나 분할된 상황등을 쉽게 파악할 수 있어서 좋습니다. (간단하게 디스크 조각모음처럼 화면에 할당된곳과 빈 곳의 이미지맵을 생성해서 표시할 수도 있습니다. - 해결에 크게 도움은 안되는 듯 싶습니다만... ^^)

메모리 할당이 많이 된 코드나 불필요하게 남아 있는 코드등을 실행 중간 중간에 체크해볼 수 있습니다. (이건 할당과는 무관하지만, 개발 과정에 반드시 해야 할 작업... 참고 페이지는
http://www.flipcode.com/tutorials/tut_memleak.shtml )

최근에 포켓 PC로 작업할 일이 있어서 작업했던 파일이고, 쭉 사용했기 때문에 어느정도 안정성은 검증된 코드라고 감히 말씀 드리겠습니다. ^^; (효율이 좋다고는 할 수는 없습니다만...)

구지 이런 식으로 루틴을 만들어 사용할 필요는 없지만, 만약 제한된 리소스 사용으로 불안해 하시거나, 즐기시는 (^^;) 분들은 한번 이런 식으로 접근해봐도 나쁘지는 않을 듯 싶습니다.

댓글을 달아 주세요

  1. britney nip slip 2007/10/18 07:28  댓글주소  수정/삭제  댓글쓰기

    친구는 너의 위치의 현재 팬이 되었다!

  2. orgasm squirt woman 2008/03/13 03:18  댓글주소  수정/삭제  댓글쓰기

    너는 아주 좋은 보는 위치가 있는다!

  3. public sex caught on tape 2008/03/13 06:15  댓글주소  수정/삭제  댓글쓰기

    많은 감사 우수한 위치! 나는 너의 웹사이트를 사랑한다!

  4. lesbian 101 2008/03/13 07:14  댓글주소  수정/삭제  댓글쓰기

    그런 경이롭 위치를 위해 많게의 감사!

  5. free photo porn 2008/03/13 09:16  댓글주소  수정/삭제  댓글쓰기

    많은 감사 우수한 위치! 나는 너의 웹사이트를 사랑한다!

  6. d807 headset samsung 2008/03/14 04:30  댓글주소  수정/삭제  댓글쓰기

    나의 친구는 너의 위치의 현재 팬이 되었다!