| void * | operator new (std::size_t size, modm::MemoryTraits traits) | 
|  | 
| void * | operator new[] (std::size_t size, modm::MemoryTraits traits) | 
|  | 
| void * | operator new (std::size_t size, modm::MemoryTraits traits, const std::nothrow_t &) noexcept | 
|  | 
| void * | operator new[] (std::size_t size, modm::MemoryTraits traits, const std::nothrow_t &) noexcept | 
|  | 
| enum | modm::MemoryTrait : uint16_t { modm::MemoryTrait::AccessSBus = Bit0, 
modm::MemoryTrait::AccessDBus = Bit1, 
modm::MemoryTrait::AccessIBus = Bit2, 
modm::MemoryTrait::AccessDMA = Bit3,
 modm::MemoryTrait::AccessDMA2D = Bit4, 
modm::MemoryTrait::AccessMDMA = Bit5, 
modm::MemoryTrait::TypeCoreCoupled = Bit13, 
modm::MemoryTrait::TypeNonVolatile = Bit14,
 modm::MemoryTrait::TypeExternal = Bit15
 }
 | 
|  | Describes access and type of dynamic memory.  More... 
 | 
|  | 
| using | modm::MemoryTraits = Flags16< MemoryTrait > | 
|  | A memory can have multiple traits. 
 | 
|  | 
| constexpr MemoryTraits | modm::MemoryFastCode = (MemoryTrait::AccessIBus | MemoryTrait::TypeCoreCoupled) | 
|  | 
| constexpr MemoryTraits | modm::MemoryFastData = (MemoryTrait::AccessDBus | MemoryTrait::TypeCoreCoupled) | 
|  | 
| constexpr MemoryTraits | modm::MemoryDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA) | 
|  | 
| constexpr MemoryTraits | modm::MemoryDMA2D = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA2D) | 
|  | 
| constexpr MemoryTraits | modm::MemoryMDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessMDMA) | 
|  | 
| constexpr MemoryTraits | modm::MemoryExternal = (MemoryTrait::AccessSBus | MemoryTrait::TypeExternal) | 
|  | 
| constexpr MemoryTraits | modm::MemoryBackup = (MemoryTrait::AccessSBus | MemoryTrait::TypeNonVolatile) | 
|  | 
| constexpr MemoryTraits | modm::MemoryDefault = MemoryDMA | 
|  | Default memory is DMA-able. 
 | 
|  | 
lbuild module: modm:architecture:memory
Memories have different traits, such as DMA-ability or access time. The memory allocator functions (malloc(), operator new, etc) by default only return DMA-able memories, ordered by fastest access time. To allocate memory with specific traits, use the overloaded operator new:
- Note
- You need to choose a heap implementation! You can include the modm:platform:heapmodule or supply your own implementation.
Describes access and type of dynamic memory. 
| Enum Values | Documentation | 
|---|
| AccessSBus | Memory is accessible via System-Bus.  | 
| AccessDBus | Memory is accessible via Data-Bus.  | 
| AccessIBus | Memory is accessible via Instruction-Bus.  | 
| AccessDMA | Memory is accessible via DMA.  | 
| AccessDMA2D | Memory is accessible via 2D DMA.  | 
| AccessMDMA | Memory is accessible via MDMA.  | 
| TypeCoreCoupled | Memory is coupled closely to the core.  | 
| TypeNonVolatile | Memory is non-volatile (battery-backed)  | 
| TypeExternal | Memory is external RAM.  | 
 
 
Request object memory with defined traits. 
 
 
 
  
  | 
        
          | void* operator new | ( | std::size_t | size, |  
          |  |  | modm::MemoryTraits | traits, |  
          |  |  | const std::nothrow_t & |  |  
          |  | ) |  |  |  | noexcept | 
 
Request object memory with defined traits and return nullptr if out-of-memory! 
 
 
 
Request array memory with defined traits. 
 
 
 
  
  | 
        
          | void* operator new[] | ( | std::size_t | size, |  
          |  |  | modm::MemoryTraits | traits, |  
          |  |  | const std::nothrow_t & |  |  
          |  | ) |  |  |  | noexcept | 
 
Request array memory with defined traits and return nullptr if out-of-memory! 
 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryBackup = (MemoryTrait::AccessSBus | MemoryTrait::TypeNonVolatile) |  | constexpr | 
 
Backup memory is accessible by at least the S-Bus and it is non-volatile. There is no fallback memory on exhaustion. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA) |  | constexpr | 
 
DMA-able memory is accessible by at least the S-Bus and DMA. There is no fallback memory on exhaustion. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryDMA2D = (MemoryTrait::AccessSBus | MemoryTrait::AccessDMA2D) |  | constexpr | 
 
DMA-able memory is accessible by at least the S-Bus and 2D DMA. There is no fallback memory on exhaustion. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryExternal = (MemoryTrait::AccessSBus | MemoryTrait::TypeExternal) |  | constexpr | 
 
External memory is accessible by at least the S-Bus and it is external. Fallback memory on exhaustion is internal. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryFastCode = (MemoryTrait::AccessIBus | MemoryTrait::TypeCoreCoupled) |  | constexpr | 
 
Fast code memory is accessible by at least the I-Bus and it is core-coupled. Fallback memory on exhaustion is not core-coupled. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryFastData = (MemoryTrait::AccessDBus | MemoryTrait::TypeCoreCoupled) |  | constexpr | 
 
Fast data memory is accessible by at least the D-Bus and it is core coupled. Fallback memory on exhaustion is not core-coupled. 
 
 
  
  | 
        
          | constexpr MemoryTraits modm::MemoryMDMA = (MemoryTrait::AccessSBus | MemoryTrait::AccessMDMA) |  | constexpr | 
 
DMA-able memory is accessible by at least the S-Bus and MDMA. There is no fallback memory on exhaustion.