Dynamic memory allocation allocates memory on the heap as needed at run time, instead of allocating memory statically on the stack. Dynamic memory allocation is beneficial when:
You do not know the upper bound of an array.
You do not want to allocate memory on the stack for large arrays.
Dynamic memory allocation and the freeing of this memory can result in slower execution of the generated code. To control the use of dynamic memory allocation for variable-size arrays, you can:
For an unbounded variable-size array, the code generator allocates memory dynamically on the heap. For a variable-size array with upper bound, whose size, in bytes, is less than the dynamic memory allocation threshold, the code generator allocates memory statically on the stack. To prevent dynamic memory allocation:
Specify upper bounds for a variable-size array. See Specify Upper Bounds for Variable-Size Arrays.
Make sure that the size of the array, in bytes, is less than the dynamic memory allocation threshold. See Configure Code Generator to Use Dynamic Memory Allocation for Arrays Bigger Than a Threshold.
By default, dynamic memory allocation
is enabled. To disable it, in a configuration object for fixed-point
acceleration, set the
If you disable dynamic memory allocation, you must provide upper bounds for variable-size arrays.
Instead of disabling dynamic memory allocation for all variable-size arrays, you can specify for which size arrays the code generator uses dynamic memory allocation.
Use the dynamic memory allocation threshold to:
Disable dynamic memory allocation for smaller arrays. For smaller arrays, static memory allocation can speed up generated code. However, static memory allocation can lead to unused storage space. You can decide that the unused storage space is not a significant consideration for smaller arrays.
Enable dynamic memory allocation for larger arrays. For larger arrays, when you use dynamic memory allocation, you can significantly reduce storage requirements.
The default dynamic memory allocation
threshold is 64 kilobytes. To change the threshold, in a configuration
object for fixed-point acceleration, set the
To instruct the code generator to
use dynamic memory allocation for variable-size arrays whose size
is greater than or equal to the threshold, in the configuration object,