Skip to content

qlibs/mem

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

58 Commits
 
 
 
 
 
 

Repository files navigation

// Overview / API / FAQ / Resources

mem: Memory Allocator library

MIT Licence Version Build Try it online

https://en.wikipedia.org/wiki/Allocator_C++

Features

Requirements

Overview

import mem;

int main() {
  static_assert(mem::allocator_like<std::allocator<int>>);
  static_assert(mem::allocator_like<mem::allocator::aligned<int, std::align_val_t(64u)>>);
  static_assert(mem::allocator_like<mem::allocator::stack<int, 1024u>>);
  static_assert(mem::allocator_like<mem::allocator::transparent_huge_pages<int>>);
  static_assert(mem::allocator_like<mem::allocator::huge_pages<int>>);
  static_assert(mem::allocator_like<mem::allocator::numa<int>>);

  {
    std::vector<int, mem::allocator::aligned<int, std::align_val_t(64u)>> v{};
    std::vector<int, mem::allocator::stack<int, 1024u>> v{};
    // echo 20 > /proc/sys/vm/nr_hugepages
    std::vector<int, mem::allocator::huge_pages<int>> v{};
    // echo always > /sys/kernel/mm/transparent_hugepage/hugepages-2048kB/enabled
    std::vector<int, mem::allocator::transparent_huge_pages<int>> v{};
    // -lnuma # requires libnuma-dev
    std::vector<int, mem::allocator::numa<int>> v{};
  }
}

API

FAQ

  • How to disable running tests at compile-time?
    When -DNTEST is defined static_asserts tests wont be executed upon inclusion. Note: Use with caution as disabling tests means that there are no gurantees upon inclusion that given compiler/env combination works as expected.

  • Similar projects?
    std::pmr

Resources

std::allocator

Transparent Huge Pages

Huge Pages

Non Uniform Memory Access

License