| 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:heap module 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.