연습을 위해, 나는 STARTUPINFO
구조를 본다. 보시다시피 마지막 세 요소의 유형은 HANDLE
입니다.HANDLE의 크기는 얼마입니까?
그래서 HANDLE
의 크기를 알고 싶습니다. 누군가 HANDLE
의 크기를 알고 있습니까?
연습을 위해, 나는 STARTUPINFO
구조를 본다. 보시다시피 마지막 세 요소의 유형은 HANDLE
입니다.HANDLE의 크기는 얼마입니까?
그래서 HANDLE
의 크기를 알고 싶습니다. 누군가 HANDLE
의 크기를 알고 있습니까?
Windows HANDLE
유형은 완전히 불투명하지 않습니다. Windows는 의존 할 수있는 몇 가지 속성을 정의합니다. 주된 질문은 귀하의 질문에 대한 답변입니다. 항상 유형이 void *
입니다. MSDN에 Windows Data Types 항목에서 :
HANDLE
개체에 대한 핸들. 다음과 같이
이 유형은 WINNT.H에 선언 :
typedef PVOID HANDLE;
을 나중에 표에서 볼 수 PVOID
가 void *
로 정의된다.
따라서 HANDLE
은 void *
과 동일한 크기입니다. 즉, 32 비트 컴파일러를 사용하는 경우 32 비트이고 64 비트 컴파일러를 사용하는 경우 64 비트입니다. 이 값 중 하나를 코드에 하드 코딩 할 필요가 없으며 대신 sizeof(HANDLE)
을 사용하면됩니다.
Windows HANDLE
유형의 다른 속성은 매우 모호하며 커널 처리의 경우에만 the bottom two bits are always zero입니다. 코드에 의존 할 필요는 없으며 절대 원하지 않을 것입니다. 완전성을 위해 이것을 언급하고 Microsoft가 HANDLE
을 내부 구현 세부 이상의 의미로 정의한 방법을 강조합니다.
가장 좋은 대답은 sizeof(HANDLE)
을 사용하여이 정보를 얻는 것입니다. 내가 기억한다면 HANDLE
은 일반적으로 void*
에 대해 typedef
으로 구현되므로 아마도 32 비트 또는 64 비트 일 것이지만 이것에 의존해서는 안됩니다.
희망이 도움이됩니다.
sizeof (HANDLE)를 찾아보십시오. 나는 그것이 무효라고 생각한다. –
HANDLE은 일반적으로'void *'입니다. 따라서 포인터는 4 바이트 (시스템에 따라 다름) – AndyG
'HANDLE'은 C99에 없으며 Posix에 없습니다. 윈도우 일 것 같아요. –