Q&A

  • 가상메모리 사용법 좀....
안녕하세요.

프로그램 개발중에 중요한 문제가 발생했습니다.



대용량(50~100MB)의 이미지를 처리해야 되는데, 메모리 문제로 프로그램이

죽는 현상이 발생합니다.



그래서, 윈도우의 가상메모리를 이용하려 합니다.

윈도우의 가상메모리에 이미지를 로드하여 사용하고 싶은데,

가상메모리를 이용하는 방법 좀 알려주세요.



또는 대용량의 이미지를 무리없이 처리하는 방법이 있으면,

조언 부탁 드립니다.(포토샵처럼요...)



참고로, 전 C++빌더를 사용합니다.



부디...

3  COMMENTS
  • Profile
    양병규 2000.06.05 19:38
    윈도우의 가상메모리를 사용하는 방법은...



    예전에 윈도3.1때는 델파이1가지고 했었는디...

    지금도 그게 되는지 모르겠네용 아마도 안될듯싶습니다.



    하지만 그건 별로 중요하지 않습니다. 대부분 포토샵, 코렐드로나 아래한글, MS워드같은 프로그램들 보면 자기네만의 스와핑을 구현해서 사용합니다. 대표적으로 MS워드같은경우는 별도의 스와핑파일을 생성해서 사용하는데.... 그 파일구조가 DB와 같은식으로 되어있습니다. 즉 레코드와 필드 구조로 되어있는데...



    한 레코드를 1024Byte라하고 한 레코드에는 4개의 필드가 있다고 치고...

    내용을 읽을때는...

    각 레코드의 마지막 몇바이트에는 다음 레코드의 위치를 써 놓습니다. 그리고 그 레코드로 가서 읽고 그 레코드의 마지막 몇 바이트를 읽어서 또 그 다음 레코드를 읽어옵니다.



    레코드를 마지막에 하나더 추가하는건 어렵지 않은데..그러면.. 중간에 끼워넣으려면?

    마지막에 하나 추가한후 중간에 끼워넣으려는 위치의 앞레코드를 찾아서 그 레코드의 마지막몇바이트에 추가한 레코드의 위치를 써넣고 추가한 레코드의 마지막 몇바이트에는 다음 레코드의 위치를 써넣습니다.



    뭔소린지 이해하시죠?

    워드같은경우는 스와핑뿐만아니라.. DOC파일도 이런 구조로 되어있습니다.

    그래서 워드작업을 하면서 중간에 내용을 막 써넣어도 금방금방 파일이 업데이트되죠...



    포토샵이같은 이미지프로그램을 비롯해서 스와핑을 하는 대부분 프로그램들이 이런 방법을 사용합니다.



    그럼

    평안하시길~





    미미 wrote:

    > 안녕하세요.

    > 프로그램 개발중에 중요한 문제가 발생했습니다.

    >

    > 대용량(50~100MB)의 이미지를 처리해야 되는데, 메모리 문제로 프로그램이

    > 죽는 현상이 발생합니다.

    >

    > 그래서, 윈도우의 가상메모리를 이용하려 합니다.

    > 윈도우의 가상메모리에 이미지를 로드하여 사용하고 싶은데,

    > 가상메모리를 이용하는 방법 좀 알려주세요.

    >

    > 또는 대용량의 이미지를 무리없이 처리하는 방법이 있으면,

    > 조언 부탁 드립니다.(포토샵처럼요...)

    >

    > 참고로, 전 C++빌더를 사용합니다.

    >

    > 부디...

  • Profile
    미미 2000.06.06 02:00
    안녕하세요.

    양병규님의 답변 고맙습니다.



    그런데, 제가 궁금한것은 어떻게하면 윈도우즈의 가상메모리를 직접

    엑세스 할수 있는지였습니다. 윈도우즈의 가상메모리를 직접

    사용하는 방법을 알고 싶네요.



    그리고, 양병규님의 답변은 제가 궁금해하던 다른쪽의 일에

    많은 도움이 되었습니다. 답변 고맙습니다.



    그럼 다시한번 부탁할께요..

  • Profile
    타락천사 2000.06.05 23:25
    안녕하세여..타락임다..^^



    스와핑은 페이지를 메모리에 올리는 방법인줄 알구 있는데..^^;;;



    그래두 내용은 흥미 있습니다..^^



    글구, Linked List를 쓰는 방법은 워드문서에서 주로 쓴다구 들었습니다..



    포토나 일러에서두 그러는지 모르겠군여..



    좀 자세히 알려주시면 감사하겠습니다..^^



    왕초보 타락천사..^_____^



    사족: 절대 비아냥거리는게 아닙니다.. 제가 잘못알구 있나해서 질문드립니다..



    양병규 wrote:

    > 윈도우의 가상메모리를 사용하는 방법은...

    >

    > 예전에 윈도3.1때는 델파이1가지고 했었는디...

    > 지금도 그게 되는지 모르겠네용 아마도 안될듯싶습니다.

    >

    > 하지만 그건 별로 중요하지 않습니다. 대부분 포토샵, 코렐드로나 아래한글, MS워드같은 프로그램들 보면 자기네만의 스와핑을 구현해서 사용합니다. 대표적으로 MS워드같은경우는 별도의 스와핑파일을 생성해서 사용하는데.... 그 파일구조가 DB와 같은식으로 되어있습니다. 즉 레코드와 필드 구조로 되어있는데...

    >

    > 한 레코드를 1024Byte라하고 한 레코드에는 4개의 필드가 있다고 치고...

    > 내용을 읽을때는...

    > 각 레코드의 마지막 몇바이트에는 다음 레코드의 위치를 써 놓습니다. 그리고 그 레코드로 가서 읽고 그 레코드의 마지막 몇 바이트를 읽어서 또 그 다음 레코드를 읽어옵니다.

    >

    > 레코드를 마지막에 하나더 추가하는건 어렵지 않은데..그러면.. 중간에 끼워넣으려면?

    > 마지막에 하나 추가한후 중간에 끼워넣으려는 위치의 앞레코드를 찾아서 그 레코드의 마지막몇바이트에 추가한 레코드의 위치를 써넣고 추가한 레코드의 마지막 몇바이트에는 다음 레코드의 위치를 써넣습니다.

    >

    > 뭔소린지 이해하시죠?

    > 워드같은경우는 스와핑뿐만아니라.. DOC파일도 이런 구조로 되어있습니다.

    > 그래서 워드작업을 하면서 중간에 내용을 막 써넣어도 금방금방 파일이 업데이트되죠...

    >

    > 포토샵이같은 이미지프로그램을 비롯해서 스와핑을 하는 대부분 프로그램들이 이런 방법을 사용합니다.

    >

    > 그럼

    > 평안하시길~

    >

    >

    > 미미 wrote:

    > > 안녕하세요.

    > > 프로그램 개발중에 중요한 문제가 발생했습니다.

    > >

    > > 대용량(50~100MB)의 이미지를 처리해야 되는데, 메모리 문제로 프로그램이

    > > 죽는 현상이 발생합니다.

    > >

    > > 그래서, 윈도우의 가상메모리를 이용하려 합니다.

    > > 윈도우의 가상메모리에 이미지를 로드하여 사용하고 싶은데,

    > > 가상메모리를 이용하는 방법 좀 알려주세요.

    > >

    > > 또는 대용량의 이미지를 무리없이 처리하는 방법이 있으면,

    > > 조언 부탁 드립니다.(포토샵처럼요...)

    > >

    > > 참고로, 전 C++빌더를 사용합니다.

    > >

    > > 부디...