
FFI::addr 메서드는 포인터 주소를 반환합니다. 포인터 주소가 0이 되는 경우는 다음과 같습니다.
1. 포인터가 초기화되지 않은 경우: 포인터를 선언했지만 초기화하지 않은 경우, 포인터 주소는 0이 됩니다. 예를 들어, `ptr = FFI::MemoryPointer.new(:void)`만 선언한 경우, `addr = ptr.addr`로 포인터 주소를 얻을 때 0이 반환됩니다.
2. 포인터가 null인 경우: 포인터를 null로 초기화한 경우, 포인터 주소는 0이 됩니다. 예를 들어, `ptr = nil`으로 포인터를 null로 초기화한 경우, `addr = ptr.addr`로 포인터 주소를 얻을 때 0이 반환됩니다.
3. 함수 호출에서 에러가 발생한 경우: 함수 호출이 실패한 경우, 포인터 주소는 0이 됩니다. 예를 들어, `MyLibrary.my_function(ptr)` 함수 호출이 실패한 경우, `addr = MyLibrary.my_function(ptr)`로 포인터 주소를 얻을 때 0이 반환됩니다.
4. 포인터가 해제된 경우: 포인터를 해제한 경우, 포인터 주소는 0이 됩니다. 예를 들어, `ptr.free`로 포인터를 해제한 경우, `addr = ptr.addr`로 포인터 주소를 얻을 때 0이 반환됩니다.
5. 포인터가 이미 사용된 경우: 포인터를 이미 사용한 경우, 포인터 주소는 0이 됩니다. 예를 들어, `ptr = FFI::MemoryPointer.new(:void)`로 포인터를 선언한 후, `ptr = nil`으로 포인터를 null로 초기화한 경우, `addr = ptr.addr`로 포인터 주소를 얻을 때 0이 반환됩니다.
2025-06-25 23:03