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 中推出