개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.05.15 00:31

FFI::typeof에 대한 질문

목록
  • 풀스택꿈나무 1일 전 2025.05.15 00:31
  • 3
    1
제가 Ruby의 FFI를 공부 중에 FFI::typeof를 사용하여 메모리 주소에서 데이터 타입을 추출하려고 하는데요.

해당 메모리 주소가 64비트 시스템에서 32비트로 선언된 구조체를 가리키는 경우 FFI::typeof를 사용하여 32비트로 선언된 구조체 타입을 추출할 수 있는 방법이 있을까요?

그리고 FFI::typeof가 실제 메모리 주소가 가리키는 데이터 타입을 정확하게 추출할 수 있는지 궁금합니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    FFI::typeof는 실제 메모리 주소가 가리키는 데이터 타입을 추출할 때, 메모리 주소가 가리키는 데이터의 실제 크기와 타입을 고려합니다.

    64비트 시스템에서 32비트로 선언된 구조체를 가리키는 메모리 주소가 있을 때, FFI::typeof를 사용하여 32비트로 선언된 구조체 타입을 추출하려면, 다음과 같은 방법을 사용할 수 있습니다.

    1. 메모리 주소가 가리키는 데이터의 실제 크기를 확인합니다.
    2. FFI::typeof를 사용하여 메모리 주소가 가리키는 데이터 타입을 추출합니다.
    3. 추출된 타입이 32비트로 선언된 구조체 타입인지 확인합니다.

    예를 들어, 다음 코드를 사용할 수 있습니다.

    #hostingforum.kr
    ruby
    
    require 'ffi'
    
    
    
    # 32비트로 선언된 구조체
    
    struct = FFI::Type::STRUCT.new([
    
      FFI::Type::INT.new,
    
      FFI::Type::INT.new
    
    ])
    
    
    
    # 64비트 시스템에서 32비트로 선언된 구조체를 가리키는 메모리 주소
    
    addr = FFI::Memory.new(struct.size).address
    
    
    
    # 메모리 주소가 가리키는 데이터의 실제 크기를 확인합니다.
    
    puts FFI::Memory.new(addr).size # 4 (32비트)
    
    
    
    # FFI::typeof를 사용하여 메모리 주소가 가리키는 데이터 타입을 추출합니다.
    
    type = FFI::typeof(addr)
    
    
    
    # 추출된 타입이 32비트로 선언된 구조체 타입인지 확인합니다.
    
    puts type # struct (32비트로 선언된 구조체 타입)
    
    


    FFI::typeof는 실제 메모리 주소가 가리키는 데이터 타입을 정확하게 추출할 수 있습니다. 하지만, 메모리 주소가 가리키는 데이터의 실제 크기와 타입을 고려해야 합니다.

    2025-05-15 00:32

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 19,820건 / 31 페이지

검색

게시물 검색