In general structures require memory to store data, this is done with Memory objects, differently from STL allocator each memory object allocate and encapsulate the memory. Allocator implementations are not part of the OpenFPM_data module, for this reason they will be not discussed in detail. Possible memory objects are;
HeapMemory: This object produce 16 byte aligned memory
CudaMemory: This object produce GPU memory with a PINNED HOST memory associated
PtrMemory: This object does not produce memory but get memory from an external source
PreAllocMemory : This object allocate memory initially and answer to a predetermined sequence of allocation useful if you want two distinct structures contiguous in memory (for communication)
For more detail on how to create memory objects and what they do, referee to the OpenFPM_device project.