MPI_Win_allocate allocates a memory area of at least the size demanded, then makes it accessible one-sidedly to other MPI processes in the communicator through a window. The call returns an opaque object that represents the attributes of each window (as specified by the initialisation call), and the group of processes that own and access the set of windows. MPI_Win_allocate is a collective operation; it must be called on all MPI processes in the communicator concerned. Windows created must be freed with MPI_Win_free once all pending RMA communications with that window are complete. Other variants of MPI_Win_allocate are MPI_Win_allocate_shared, MPI_Win_create are MPI_Win_create_dynamic.