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