* This function is only useful for simple structures of the form "{ array, used, size }" where the array is a simple type.
* If the simple type that is "array" requires additional memory manipulation on allocation, then do not use this function.
*
+ * This does not guarantee the size increased to be increased by the given step.
+ * There may be some practices that result in the step being increased by a smaller amount.
+ *
* @param step
* The allocation step to use.
*
* This function is only useful for simple structures of the form "{ array, used, size }" where the array is a simple type.
* If the simple type that is "array" requires additional memory manipulation on allocation, then do not use this function.
*
+ * This does guarantee the size to be increased by the given amount, but only when (used + amount > size).
+ *
* @param amount
* A positive number representing how much to increase the size by.
* @param width