控制固定大小数组的内存分配
固定大小数组的动态内存分配在堆上为数组分配内存,而不是在程序堆栈上分配内存。在以下情况下,考虑使用动态内存分配:
固定大小数组很大,您不希望在堆栈上分配内存。
您的目标硬件内存有限,并且您不想在程序堆栈上为数组分配内存。
对于较大的数组,您可以显著降低存储需求。动态内存分配可能导致所生成代码的执行速度变慢。
对所有固定大小数组启用动态内存分配
默认情况下,对固定大小数组禁用动态内存分配。要禁用它,请执行以下操作:
在用于代码生成的配置对象中,将
DynamicMemoryAllocationForFixedSizeArrays参数设置为'Always'。或者,在 App 的内存设置下,将固定大小数组的动态内存分配设置为
'Always'。
代码生成器在堆上为所有大小大于 64 字节的固定大小数组动态分配内存。
对大于阈值的数组启用动态内存分配
除了在堆上为所有固定大小数组动态分配内存之外,您还可以指定阈值大小,超出该值时将动态分配内存。要指示代码生成器对大小大于或等于阈值的固定大小数组使用动态内存分配,请执行以下操作:
在配置对象中,将
DynamicMemoryAllocationForFixedSizeArrays设置为'Threshold'。在 MATLAB Coder 的内存设置中,将固定大小数组的动态内存分配设置为
For arrays with max size at or above threshold。
另请参阅
coder.EmbeddedCodeConfig (MATLAB Coder) | coder.MexCodeConfig (MATLAB Coder) | coder.CodeConfig (MATLAB Coder)
主题
- 控件可变大小数组的内存分配 (MATLAB Coder)
- 生成的代码中数组的表示 (MATLAB Coder)
- 在生成的函数接口中使用动态分配的 C 数组 (MATLAB Coder)
- Use Dynamically Allocated C++ Arrays in Generated Function Interfaces (MATLAB Coder)