主要内容

控制内存分配适应可变数组

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

  • 你不知道数组的上界。

  • 你不想在堆栈上分配内存大数组。

动态内存分配和释放的内存可能导致较慢的执行生成的代码。控制使用动态内存分配适应可变数组,您可以:

为适应可变数组提供上界

对于一个无界的适应可变数组,代码生成器上动态分配内存堆。与上界适应可变数组的大小,以字节为单位,小于阈值的动态内存分配,代码生成器静态地分配内存的堆栈。为了防止动态内存分配:

  1. 为适应可变数组指定上界。看到为适应可变数组指定上界

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

禁用动态内存分配

默认情况下,启用动态内存分配为适应可变数组。禁用:

  • 在代码生成的配置对象,设置DynamicMemoryAllocation参数“永远”

  • MATLAB®编码器™应用程序,内存设置,设置动态内存分配的大小可变的数组从来没有

如果你禁用动态内存分配,你必须提供适应可变数组的上界。

为阵列配置代码生成器使用动态内存分配大于一个阈值

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

使用动态内存分配阈值:

  • 禁用动态内存分配较小的数组。对于较小的数组,静态内存分配可以加快生成的代码。然而,静态内存分配会导致未使用的存储空间。你可以决定,未使用的存储空间不是一个重要的考虑更小的数组。

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

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

  • 在配置对象,设置DynamicMemoryAllocation“阈值”

  • MATLAB编码器应用程序,内存设置,设置动态内存分配的大小可变的数组达到或超过阈值数组的最大大小

默认的动态内存分配的阈值是64字节。改变阈值:

  • 在代码生成的配置对象,设置DynamicMemoryAllocationThreshold

  • MATLAB编码器应用程序,内存设置,设置动态内存分配的阈值

相关的话题