主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

内存管理和清理

概述

生成的 C++ 代码通过对象析构函数提供一致的垃圾收集,并且 MATLAB® Runtime 的内部内存管理器进行优化以避免堆碎片。

如果您的系统仍然存在内存约束,请尝试在 MATLAB 中预分配数组。这将减少对内存管理器的调用次数,以及堆碎片的程度。

将 mxArrays 传递给共享库

当在使用 MATLAB Runtime 的应用程序中创建 mxArray 时,它是在 MATLAB Runtime 的托管内存空间中创建的。

因此,在调用 mxArray 之前切勿创建 mclInitializeApplication(或调用任何其他 MATLAB 函数),这一点非常重要。

当您不再 mxDestroyArray 代码中的特定 mxArray 时,调用 mxDestroyArray 是安全的,即使输入已分配给 MATLAB 中的持久变量或全局变量。MATLAB 使用引用计数来确保在调用 MATLAB 时,如果对基础数据的另一个引用仍然存在,则不会释放内存。即使底层内存没有被释放,传递给 mxArraymxDestroyArray 也将不再有效。

有关 mclInitializeApplicationmclTerminateApplication 的详细信息,请参阅从 C/C++ 调用 MATLAB Compiler SDK API 函数

有关 mxArray 的详细信息,请参阅C Matrix API