void* iarray_allocate(iarray* x, size_t pos);
t* p = iarray_allocate(&x,pos);
iarray_allocate is similar to iarray_get, but if the requested element is not in the array, the array will be resized. If the resize fails, iarray_allocate returns NULL and leaves the array untouched.
This function is safe to use in environments with multiple threads, but it can block for indeterminate time if other threads are reallocating the array at the same time.
Note that it is safe to use iarray_allocate where you would otherwise use iarray_get. The only reason to use iarray_get over iarray_allocate would be optimization.
Return a pointer to the requested element. If there was a memory allocation failure, returns NULL.
iarray_init(3), iarray_get(3), iarray_free(3)
iarray_free(3), iarray_get(3), iarray_init(3).