プログラミング言語SML#解説 4.0.0版
19

19.23 サイズ式 _sizeof(ty)

ty型の値のメモリ上での大きさ(バイト数)を表す 定数式である. この式の型はty sizeであり,値はバイト数を 表す整数である.

サイズ式は主にインポートしたCの多相関数を呼び出すのに用いる. 例えば,Cの標準ライブラリ関数memcpyを配列の先頭1要素の コピーに用いる場合,インポート式は以下の通りである.

val ’a#unboxed memcpy =
    _import "memcpy" : (’a array, ’a vector, ’a size) -> unit ptr

このようにインポートした関数を以下のようにして呼び出すことができる.

fun ’a#unboxed copy (a : ’a array, v) =
    if Array.length a > 0 andalso Vector.length v > 0
    then memcpy (a, v, _sizeof(’a))
    else ()