Ruby 2.2.0 リファレンスマニュアル > ライブラリ一覧 > fiddle/importライブラリ > Fiddle::Importerモジュール > sizeof

instance method Fiddle::Importer#sizeof

sizeof(t) -> Integer[permalink][rdoc]

C における sizeof(t) の値を返します。

t が文字列の場合、その文字列が表す C の型の size が返されます。 例えば、sizeof("char") は 1 を返します。 sizeof("char*") は環境によって 4 や 8 といった値を返します。

Fiddle::Importer#struct で定義した 構造体クラスを渡すと、その構造体のサイズを返します。 Fiddle::Importer#union で定義した共用体クラスも同様です。

t がクラスの場合、t が to_ptr というインスタンスメソッドを持っている ならば t.size を返します。

それ以外の場合は Pointer[t].size を返します。

[PARAM] t:
サイズを計算する対象
[EXCEPTION] Fiddle::DLError:
t として文字列を渡し、それが表している型を Fiddle が知らなかった 場合に発生します

例:

require 'fiddle/import'

module A
  extend Fiddle::Importer
  Timeval = struct(["long tv_sec", "long tv_usec"])
  p sizeof("char") # => 1
  p sizeof("void*") # => 8
  p sizeof(Timeval) # => 16
end