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

instance method DL::Importer#sizeof

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

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

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

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

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

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

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

例:

require 'dl/import'

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