Q&A

  • $FFFFFFFF의 의미는?
const
  hMemMap = $FFFFFFFF;
...
var
FhFile    : THandle;
begin
FhFile := hMemMap;
...

이렇게 되어있을때 $FFFFFFFF의 값은 무엇을 의미하는거죠?
답변 기다리겠습니다.
2  COMMENTS
  • Profile
    타락천사 2003.03.30 01:09

    안녕하세요.. 타락임다..

    흘흘.. 메모리 맵을 공부할 조은 기회 입니다. "데이터 공유"와 "메모리 맵 파일" 을 공부해 보세요..

    대답을 하자면, 메모리 맵 파일 객체를 생성할 때 첫번째 인자는 "맵할 파일의 핸들" 입니다. 첫번째 인자에 $FFFFFFFF, 즉 DWord(-1) 을 넘기는 것은,
    시스템의 페이징 파일로부터 공간을 할당하라는 의미를 가집니다.

    페이징 파일은 Win32가 직접 관리하므로 메모리 맵 파일의 사용이 끝나면 페이징 파일에 할당된 메모리도 해제 됩니다.

    서로 다른 프로세스가 같은 이름으로 메모리 맵 파일을 만들면, 다른 인스턴스를 가지고 있지만, 두 인스턴스가 가지고 있는 메모리 맵 파일은 동일합니다. 그래서 프로세스 들은 그 메모리 맵 파일을 통해서 데이터를 공유하게 됩니다.

    즐푸하세여..

    타락천사..
  • Profile
    하얀까마귀 2003.02.15 05:29
    안녕하세요 하얀까마귀 입니다.

    $FFFFFFFF 은 MAX 값입니다.

    음.. 그냥 원래는 이렇게 할필요까지는 없는데 초기화 시켜주기 위해서 이렇게
    쓴겁니다.

    THandle 은 Unsigned Int 입니다. 부호가 없죠. 정수값입니다.

    unsigned 에서 이겂은 MAX값이죠. 하지만

    여기에서 하고자 하는건 다른겁니다.

    아마 아랫쪽에 파일을 연다던지 생성한다던지 하는부분이 있을텐데.

    거기에서 리턴값을 핸들로 넣어줄껍니다. 거기서 리턴하는값은 integer

    일껍니다. Signed 죠.. 부호가 있는경우에

    위의 $FFFFFFFF 은 -1 입니다.

    그러니까 그러한 함수에서 에러가 나는경우에 리턴하는값이 -1입니다.

    unsigned 에 -1로 초기화 하기 위해서 이렇게 한것 같네요..

    그럼 즐거운 시간 되세요.

    타입에서 4바이트 형이라면 해당형의 최고값을 넣어주겠다는겁니다.

    음....

    그런데 여기서는 -1 값을 가르킵니다. signed int 인경우엔
    이값이거든요..

    아마 아랫쪽에 파일을 생성하거나 여는 부분이 있을텐데 거기서
    에러가 나는 경우에 리턴값이 -1 입니다.
    그래서 초기화 시켜주기위해서 이렇게 한것 같네요..