當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


Ruby Pointer.malloc用法及代碼示例

本文簡要介紹ruby語言中 Fiddle::Pointer.malloc 的用法。

用法

Fiddle::Pointer.malloc(size, freefunc = nil) → fiddle pointer instance
Fiddle::Pointer.malloc(size, freefunc) { |pointer| ... } → ...

例子

# Automatically freeing the pointer when the block is exited - recommended
Fiddle::Pointer.malloc(size, Fiddle::RUBY_FREE) do |pointer|
  ...
end

# Manually freeing but relying on the garbage collector otherwise
pointer = Fiddle::Pointer.malloc(size, Fiddle::RUBY_FREE)
...
pointer.call_free

# Relying on the garbage collector - may lead to unlimited memory allocated before freeing any, but safe
pointer = Fiddle::Pointer.malloc(size, Fiddle::RUBY_FREE)
...

# Only manually freeing
pointer = Fiddle::Pointer.malloc(size)
begin
  ...
ensure
  Fiddle.free pointer
end

# No free function and no call to free - the native memory will leak if the pointer is garbage collected
pointer = Fiddle::Pointer.malloc(size)
...

分配 size 字節的內存並將其與可選的 freefunc 相關聯。

如果提供了一個塊,則指針將被屈服於該塊而不是被返回,並且該塊的返回值將被返回。如果有塊,則必須提供 freefunc

如果提供了 freefunc ,它將被調用一次,當指針被垃圾收集時,或者如果提供了塊,或者當用戶調用 call_free 時,以先發生者為準。 freefunc 必須是指向 Fiddle::Function 的函數或實例的地址。

相關用法


注:本文由純淨天空篩選整理自ruby-lang.org大神的英文原創作品 Pointer.malloc。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。