Name: H5Pset_vlen_mem_manager
Signature:
  herr_t `H5Pset_vlen_mem_manager`(hid_t `plist`, H5MM_allocate_t `alloc`, void *`alloc_info`, H5MM_free_t `free`, void *`free_info` )
Purpose:
  Sets the memory manager for variable-length datatype allocation in `H5Dread` and `H5Dvlen_reclaim`.
Description:
  `H5Pset_vlen_mem_manager` sets the memory manager for variable-length datatype allocation in `H5Dread` and free in `H5Dvlen_reclaim`.

  The `alloc` and `free` parameters identify the memory management routines to be used. If the user has defined custom memory management routines, `alloc` and/or `free` should be set to make those routine calls (i.e., the name of the routine is used as the value of the parameter); if the user prefers to use the system's `malloc` and/or `free`, the `alloc` and `free` parameters, respectively, should be set to `NULL`

  The prototypes for these user-defined functions would appear as follows:
  typedef void *(*`H5MM_allocate_t`)(size_t `size`, void *`alloc_info`) ;
  typedef void (*`H5MM_free_t`)(void *`mem`, void *`free_info`) ;
  The `alloc_info` and `free_info` parameters can be used to pass along any required information to the user's memory management routines.

  In summary, if the user has defined custom memory management routines, the name(s) of the routines are passed in the `alloc` and `free` parameters and the custom routines' parameters are passed in the `alloc_info` and `free_info` parameters. If the user wishes to use the system `malloc` and `free` functions, the `alloc` and/or `free` parameters are set to `NULL` and the `alloc_info` and `free_info` parameters are ignored.

Parameters:

hid_t `plist` | IN: Identifier for the dataset transfer property list.
H5MM_allocate_t `alloc` | IN: User's allocate routine, or `NULL` for system `malloc`.
void *`alloc_info` | IN: Extra parameter for user's allocation routine. Contents are ignored if preceding parameter is `NULL`.
H5MM_free_t `free` | IN: User's free routine, or `NULL` for system `free`.
void *`free_info` | IN: Extra parameter for user's free routine. Contents are ignored if preceding parameter is `NULL`.

Returns:
  Returns a non-negative value if successful; otherwise returns a negative value.
Fortran90 Interface:
  None.