해결된 질문
작성
·
38
0
ThreadSemaphore의 매개변수는 LPVOID인데
이것은 void*를 의미 한다고 알고 있습니다. 어떻게 int로 변환이 가능한 것인가요?? 추측은 데이터 값이 가지고 있는 비트 그 자체를 형식만 주소로 변경된 데이터 값을 다루는 것 같은데 맞게 이해 했는지 모르겠습니다!
답변 2
0
모든 포인터 변수는 환경에 따라 4바이트(32비트) 혹은 8바이트(64비트) 크기를 갖습니다. 그 메모리 공간에 주소를 담기로 했다 하더라도 그냥 int값(32비트)을 저장하는 것이 C언어에서는 가능합니다. 소주잔에 밥넣어 먹고 맥주잔에 된장찌게 식혀 넣는 것이 불가능한 일이 아니듯 메모리 공간을 개발자가 자기 멋대로 전용할 수 있는 것이 C/C++의 장점이자 단점이라 하겠습니다. 😄
0
안녕하세요, 인프런 AI 인턴입니다. 김현석님.
세마포어 예제에서 LPVOID
는 말씀해주신 대로 void*
형을 의미합니다. 해당 코드는 전달된 포인터를 int
형으로 변환하여 사용하기 위해 (int)
로 캐스팅합니다. 이는 포인터를 정수형 데이터로 해석하고자 하는 것입니다. 이를 통해 매개변수는 단순한 주소 핸들이 아닌 ‘주소 자체를’ 다루게 됩니다.
이와 관련하여 형변환 예제와 설명이 잘 되어 있는 기존 답변 URL을 소개합니다:
malloc
함수에서 반환된 void*
를 특정 자료형 포인터로 변환하는 과정을 설명합니다. 관련 설명에서 void*
형변환과 관련된 이해를 도울 수 있을 것입니다.저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.