
FFI::isNull 메서드는 Ruby의 FFI(Foreign Function Interface)에서 제공하는 메서드입니다. 이 메서드는 C 언어 함수의 반환 값이 NULL인지 여부를 확인하는 데 사용됩니다.
NULL 포인터를 넘기면 FFI::isNull 메서드는 FALSE를 반환합니다. NULL 포인터는 실제로 메모리 주소가 할당되지 않은 상태를 나타내는 포인터입니다.
NULL 값을 반환하는 함수를 호출한 경우, FFI::isNull 메서드는 TRUE를 반환합니다. 이 경우, C 언어 함수가 NULL 값을 반환했기 때문입니다.
예를 들어, 다음 코드를 살펴보겠습니다.
#hostingforum.kr
ruby
require 'ffi'
module MyLibrary
extend FFI::Library
ffi_lib 'mylibrary'
attach_function :my_function, [:pointer], :pointer
end
result = MyLibrary.my_function(nil)
puts MyLibrary::FFI::NULL_CHECKER.null?(result) # FALSE
puts MyLibrary::FFI::NULL_CHECKER.null?(MyLibrary.my_function(nil)) # TRUE
위 코드에서, `my_function` 함수는 NULL 값을 반환합니다. 따라서 `FFI::NULL_CHECKER.null?(MyLibrary.my_function(nil))`은 TRUE를 반환합니다. 반면, `FFI::NULL_CHECKER.null?(result)`은 FALSE를 반환합니다. 이 이유는 `result` 변수에 NULL 포인터가 할당되지 않았기 때문입니다.
2025-03-05 08:40