"CString" (コンパイルタイプ)

"CString"

C言語と互換の文字列を表す.

詳細

  • "CString""CArray"::["CChar"]マクロである.
  • "CString"はC言語のchar*またはunsigned char*に等しい.

コンストラクタ

  • "Managed"でラップされていない限り,CreateTypeInstanceで構築されたC文字列は自動的にメモリ管理されず,DeleteObjectを使って手動で解放されなければならない. »
  • CreateTypeInstance["CString",str]"String" str からC文字列を構築する.
  • CreateTypeInstance["CString",len]は長さ len のC文字列を構築する.
  • CreateTypeInstance["CString",cstr,len]は長さ lencstr のコピーを構築する.cstrlen より短いと,クラッシュする可能性がある.
  • CreateTypeInstance["CString",cstr]はヌル終端文字列 cstr のコピーを拘置する.cstr がヌル終端文字列でないと,クラッシュする可能性がある.

変換

    配列

  • 配列型は管理されたC文字列にCastすることができる.サポートされる配列型には"ListVector""NumericArray""PackedArray"がある.
  • "String"

  • Cast"String"オブジェクトを管理されたC文字列に変換するために使うことができる.
  • "RawPointer"および"OpaqueRawPointer"

  • CastはC文字列を未加工のポインタにビットキャストしたり未加工のポインタからビットキャストするために使うことができる.

例題

すべて開くすべて閉じる

  (1)

C文字列を作成し,それをC標準ライブラリ関数のstrlenに渡して長さを得る関数をコンパイルする:

文字列でコンパイルされた関数を評価する:

Possible Issues  (1)

"Managed"オブジェクトの外部で生成されたC文字列は自動的にメモリ管理されないので,手動で解放しなければならない.管理されないC文字列を作成する関数をコンパイルする:

この関数はメモリをリークする:

DeleteObjectを使って手動でC文字列を解放する:

結果の関数はメモリをリークしない: