Ruby 4.0 リファレンスマニュアル

instance method IO::Buffer#free

free -> selfRuby 3.1 から[permalink][rdoc][edit]

バッファが確保しているメモリ領域を解放します。

解放の内容はバッファの種類によって異なります。

  • 内部(internal) -- 確保したメモリを解放します。
  • 外部(external) -- 元のオブジェクトとの関連を解消します。
  • マップ(mapped) -- マッピングを解除します。

解放後は、どのメモリ領域も指さない状態になります。この状態のバッファは大きさ 0 のバッファとして扱われます。

解放したバッファでも IO::Buffer#resize を呼べば、あらためてメモリ領域を確保できます。

buf = IO::Buffer.new(4)
buf.set_string("Ruby")

buf.free
p buf.null? # => true
p buf.size  # => 0

# resize すれば再び使える
buf.resize(4)
p buf.size  # => 4

[SEE_ALSO] IO::Buffer#transfer, IO::Buffer#null?