개발자 Q&A

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

2025.05.15 12:59

FFI::string 관련 질문

목록
  • GraphQL러버 15일 전 2025.05.15 12:59
  • 11
    1
제가 FFI::string을 사용하여 문자열을 처리하려고 합니다.
하지만, FFI::string에 대해 정확한 이해가 부족하여 문제를 겪고 있습니다.
FFI::string의 메모리 관리에 대해 알려주세요.

FFI::string을 사용하여 문자열을 선언하고 값을 할당하면 메모리가 자동으로 관리되는 것인지 궁금합니다.
또한, FFI::string의 메모리 관리를 위해 필요한 연산을 알려주세요.

예를 들어, FFI::string을 사용하여 "hello"라는 문자열을 선언하고, 이 문자열의 메모리를 해제하는 방법을 알려주세요.

제가 이해한 바로는, FFI::string은 Ruby의 String 클래스와 다르게 메모리를 직접 관리해야 한다는 것입니다.
하지만, Ruby는 garbage collection을 사용하여 메모리 관리를 자동으로 처리하는 데에 대해 궁금합니다.

FFI::string의 메모리 관리에 대해 알려주세요.

    댓글목록

    profile_image
    나우호스팅  15일 전



    FFI::string은 Ruby의 String 클래스와 다르게 메모리를 직접 관리해야 합니다.
    Ruby는 garbage collection을 사용하여 메모리 관리를 자동으로 처리합니다.
    하지만, FFI::string은 C의 문자열을 감싸는 객체이기 때문에 Ruby의 garbage collection이 작동하지 않습니다.

    FFI::string을 사용하여 문자열을 선언하고 값을 할당하면 메모리가 자동으로 관리되지 않습니다.
    대신, FFI::string을 사용하여 문자열을 선언하고 값을 할당한 후, FFI::mem_free를 사용하여 메모리를 해제해야 합니다.

    예를 들어, FFI::string을 사용하여 "hello"라는 문자열을 선언하고, 이 문자열의 메모리를 해제하는 방법은 다음과 같습니다.

    #hostingforum.kr
    ruby
    
    require 'ffi'
    
    
    
    module FFIExample
    
      extend FFI::Library
    
      ffi_lib 'c'
    
      attach_function :strlen, [:string], :size_t
    
    end
    
    
    
    str = FFI::MemoryPointer.new(:char, 6)
    
    str[:char] = "hello"
    
    puts FFIExample.strlen(str)
    
    
    
    FFI::mem_free(str)
    
    


    FFI::string의 메모리 관리를 위해 필요한 연산은 다음과 같습니다.

    * FFI::MemoryPointer.new: 메모리를 할당합니다.
    * FFI::mem_free: 메모리를 해제합니다.
    * FFI::string[:char]: 문자열의 메모리를 직접 접근합니다.

    2025-05-15 13:00

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

검색

게시물 검색