
FFI::cast를 사용할 때 안전한 방법은 다음과 같습니다.
1. 포인터의 크기를 정확하게 확인하세요. 포인터의 크기는 운영체제에 따라 다를 수 있으므로, 운영체제에 맞는 크기를 사용하세요. 예를 들어, Windows에서는 32비트 운영체제에서는 포인터의 크기는 4바이트, 64비트 운영체제에서는 포인터의 크기는 8바이트입니다.
2. 포인터의 크기를 맞출 때는 FFI::MemoryPointer.from_pointer() 메서드를 사용하세요. 이 메서드는 포인터의 크기를 자동으로 인식합니다.
3. 포인터의 크기를 맞출 때는 FFI::Type.new() 메서드를 사용하세요. 이 메서드는 포인터의 크기를 지정할 수 있습니다.
위 코드에서 FFI::MemoryPointer.from_pointer(pointer)가 포인터의 크기를 인식하지 못했을 때는, 포인터의 크기를 직접 지정하세요.
#hostingforum.kr
ruby
require 'ffi'
module MyLibrary
extend FFI::Library
ffi_lib 'mylibrary'
attach_function :get_pointer, [:int], :pointer
end
pointer = MyLibrary.get_pointer(1)
value = FFI::MemoryPointer.new(:int, 4).tap do |ptr|
ptr.write_int(pointer)
end.read_int
위 코드에서 FFI::MemoryPointer.new() 메서드를 사용하여 포인터의 크기를 4바이트로 지정합니다.
2025-08-02 06:11