
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