# Homework 12 - Memory Allocators ## Läxa Implementera **två olika** allocators i valfritt system programmeringsspråk (C, C++, Rust, Zig etc). Rust recomenderas inte och är det mest krångliga att bygga memory allocators i. De är och experimental förutom GlobalAlloc. Pusha er kod till ett repo i ++organisationen på github med namnet _kth-id_-allocators ## Exempel på allocators - Arena allocator - Pool allocator - Free list - Pool allocator - Buddy allocator - En ny aldrig tidigare använd allocator?! ## Exempel på allocator interface i C ```c void* alloc(size_t size, size_t alignment) { ... } // Kan inkludera size som parameter också void free(void* ptr) { ... } // Kan inkludera old_size som parameter också void* resize(void* ptr, size_t new_size) { ... } ``` ## Resusrer - [Veckans Sildes](https://docs.google.com/presentation/d/1XZG0NpbPpQAj3x7S5tXdzTpNdcaVEYnowVgSA3Apb18/edit?usp=sharing) - Slab Allocator - [Kernel.org](https://www.kernel.org/doc/gorman/html/understand/understand011.html) - [Allocators in the linux kernel](https://hammertux.github.io/slab-allocator) - Buddy allocator - [Wikipedia](https://en.wikipedia.org/wiki/Buddy_memory_allocation) - [KTH](https://people.kth.se/~johanmon/ose/assignments/buddy.pdf) - [Rust allocators](https://doc.rust-lang.org/std/alloc/trait.Allocator.html) - [Custom rust allocators](https://doc.rust-lang.org/1.9.0/book/custom-allocators.html)