文档

控制可变大小数组的内存分配

动态内存分配在运行时根据需要在堆上分配内存,而不是在堆栈上静态地分配内存。动态内存分配在以下情况下是有益的:

  • 你不知道数组的上界。

  • 您不希望在堆栈上为大型数组分配内存。

动态内存分配和释放这些内存会导致生成的代码执行速度变慢。要控制可变大小数组动态内存分配的使用,您可以:

为可变大小数组提供上界

对于无界可变大小数组,代码生成器在堆上动态分配内存。对于具有上界的可变大小数组,其大小(以字节为单位)小于动态内存分配阈值,代码生成器将在堆栈上静态地分配内存。防止动态内存分配:

  1. 指定可变大小数组的上界。看到指定可变大小数组的上界

  2. 确保数组的大小(以字节为单位)小于动态内存分配阈值。看到配置代码生成器为大于阈值的数组使用动态内存分配

禁用动态内存分配

缺省情况下,启用内存动态分配功能。禁用它:

  • 在用于代码生成的配置对象中设置DynamicMemoryAllocation参数“关闭”

  • MATLAB®编码器™App,在内存设置,设置动态内存分配从来没有

如果禁用动态内存分配,则必须为可变大小数组提供上限。

配置代码生成器为大于阈值的数组使用动态内存分配

您可以指定代码生成器为哪个大小的数组使用动态内存分配,而不是为所有可变大小的数组禁用动态内存分配。

使用动态内存分配阈值:

  • 为较小的数组禁用动态内存分配。对于较小的数组,静态内存分配可以加快生成代码的速度。但是,静态内存分配可能导致未使用的存储空间。您可以决定,对于较小的阵列,未使用的存储空间不是一个重要的考虑因素。

  • 为较大的数组启用动态内存分配。对于较大的数组,当您使用动态内存分配时,可以显著降低存储需求。

默认动态内存分配阈值为64kb。修改阈值。

  • 在用于代码生成的配置对象中设置DynamicMemoryAllocationThreshold

  • MATLAB编码器App,在内存设置,设置动态内存分配阈值

指示代码生成器对大小大于或等于阈值的可变大小数组使用动态内存分配:

  • 在配置对象中设置DynamicMemoryAllocationThreshold“阈值”

  • MATLAB编码器App,在内存设置,设置动态内存分配阈值对于最大大小等于或高于阈值的数组

相关的话题

这个话题有帮助吗?