
FFI::TYPE_VOIDP는 포인터를 가리키는 타입입니다. 포인터를 가리키는 포인터를 정의할 때는 FFI::TYPE_VOIDP를 사용하는 것이 맞습니다.
포인터를 가리키는 포인터를 정의한 후 FFI::TYPE_UINT8로 변환하는 방법은 다음과 같습니다.
#hostingforum.kr
ruby
ffi = FFI::Library.new('your_library_name')
pointer = ffi.new('void*', 0) # void* 포인터를 생성
uint8 = pointer.address # void* 포인터를 uint8로 변환
위 예제에서 `pointer.address`를 사용하여 void* 포인터를 uint8로 변환합니다. 하지만, uint8은 8비트 부호 없는 정수이므로 void* 포인터를 uint8로 변환하는 것은 의미가 없습니다. void* 포인터는 메모리 주소 값을 나타내는 포인터이므로 uint8로 변환하는 것은 불가능합니다.
만약에 void* 포인터를 uint8로 변환해야 한다면, void* 포인터를 uint64_t로 변환하여 8바이트 메모리 주소 값을 uint64_t로 변환하는 것입니다.
#hostingforum.kr
ruby
ffi = FFI::Library.new('your_library_name')
pointer = ffi.new('void*', 0) # void* 포인터를 생성
uint64 = pointer.address # void* 포인터를 uint64_t로 변환
2025-04-13 18:59