Main Content

clibRelease

MATLAB から C++ オブジェクトを解放

説明

clibRelease(cppObj) は MATLAB® から C++ オブジェクトを解放し、アクセスできないようにします。clibRelease を呼び出す状況として、以下が考えられます。

  • C++ ライブラリがヒープ上のオブジェクトの有効期間を管理する。

  • C++ オブジェクトが自身を明示的に削除する可能性がある。

MATLAB でクラス コンストラクターまたは clib.array 型を使用して作成された C++ オブジェクトの場合、MATLAB がメモリを所有および管理します。このオブジェクトに対して clibRelease を呼び出さないでください。

すべて折りたたむ

この C++ ライブラリには Myclass オブジェクトを作成し、削除する関数があります。関数 clibRelease を使用して、削除したオブジェクトのメモリを管理します。

次のステートメントを含むヘッダー ファイル header.hpp を作成します。

class Myclass{};
Myclass* createMyclass() { return new Myclass(); }
void deleteMyclass(Myclass* myc) { delete myc; }

Myclass のインターフェイスを作成します。

clibgen.buildInterface('header.hpp','TreatObjectPointerAsScalar',true);
addpath("header")

Myclass オブジェクトを作成します。

cppObj = clib.header.createMyclass
cppObj = 
  Myclass with no properties.

関数 deleteMyclass を呼び出します。Myclass オブジェクトは MATLAB ワークスペース内に残ります。

clib.header.deleteMyclass(cppObj)
whos

このメモリを解放するには、clibRelease を呼び出します。

clibRelease(cppObj);
cppObj
cppObj = 
  handle to deleted Myclass

入力引数

すべて折りたたむ

MATLAB で作成された C++ オブジェクト。ハンドルとして指定します。基の C++ オブジェクトは、解放されると MATLAB 内でアクセスできなくなり、MATLAB ハンドル cppObj が無効になります。オブジェクトが再度ライブラリから返されると、MATLAB はハンドルを作成します。

バージョン履歴

R2019a で導入