内存管理和清理
概述
生成的 C++ 代码通过对象析构函数提供一致的垃圾收集,并且 MATLAB® Runtime 的内部内存管理器进行优化以避免堆碎片。
如果您的系统仍然存在内存约束,请尝试在 MATLAB 中预分配数组。这将减少对内存管理器的调用次数,以及堆碎片的程度。
将 mxArrays 传递给共享库
当在使用 MATLAB Runtime 的应用程序中创建 mxArray
时,它是在 MATLAB Runtime 的托管内存空间中创建的。
因此,在调用 mxArray
之前切勿创建 mclInitializeApplication
(或调用任何其他 MATLAB 函数),这一点非常重要。
当您不再 mxDestroyArray
代码中的特定 mxArray
时,调用 mxDestroyArray
是安全的,即使输入已分配给 MATLAB 中的持久变量或全局变量。MATLAB 使用引用计数来确保在调用 MATLAB 时,如果对基础数据的另一个引用仍然存在,则不会释放内存。即使底层内存没有被释放,传递给 mxArray
mxDestroyArray
也将不再有效。
有关 mclInitializeApplication
和 mclTerminateApplication
的详细信息,请参阅从 C/C++ 调用 MATLAB Compiler SDK API 函数。
有关 mxArray
的详细信息,请参阅C Matrix API。