Intermediate Topic 33 of 51 Operating Systems
Memory Allocation
Strategies like first-fit and buddy systems.
How it works
Memory allocation gives programs blocks of memory on request. The stack allocates automatically in last-in first-out order, while the heap allows blocks of any size and lifetime through malloc and free or new and delete. Allocators use strategies such as first fit, best fit, worst fit, segregated free lists, buddy systems and slab allocation, trading speed against fragmentation. Modern allocators like jemalloc and tcmalloc use per-thread caches.
Step-by-step walkthrough
- A request for 25K arrives.
- First-fit takes the first block big enough, 100K.
- Best-fit takes the smallest sufficient block, 30K.
- Worst-fit takes the largest, 200K.
- Buddy systems split blocks in halves of power of two sizes.
Where it is used
Every dynamic data structure relies on allocation, and kernels use slab allocators for fixed-size objects. Garbage-collected languages build collectors on top of heap allocators.
Common pitfall
Memory leaks, double frees, use-after-free and buffer overflows are the main bugs in manual management. External fragmentation leaves unusable gaps, while internal fragmentation wastes part of blocks. Allocation can be slow under lock contention. Use tools such as Valgrind and AddressSanitizer, prefer arenas for many short-lived objects and avoid frequent small allocations.
Where it fits in the course
Memory Allocation is topic 33 of 51 in Operating Systems, rated Intermediate. It follows Thrashing. The next topic is Memory Mapped Files.
Practice and explore
- Open the interactive lesson, with a mini quiz.
- Take the Operating Systems quiz.
How to study this topic
- Read the explanation above and restate the definition in your own words.
- Open the interactive lesson and answer its mini quiz.
- Read the common pitfall, then write a short example that avoids it.
- Check your understanding in the Operating Systems quiz, and revisit the topic if you miss a question.
Frequently asked questions
What is Memory Allocation?
Where do people use Memory Allocation?
What is the most common mistake with Memory Allocation?
What should I learn before this topic?
How can I practice it?
Is Memory Allocation hard to learn?
How long does it take to learn Memory Allocation?
Which topics are related to Memory Allocation?
What should I study after Memory Allocation?
Related topics
- Thrashing (Operating Systems)
- Memory Mapped Files (Operating Systems)
- Page Replacement Algorithms (Operating Systems)
- File Systems (Operating Systems)
- Manual Memory Management (Languages & Compilers)
- Memory Barriers (Concurrency & Parallelism)
- Memory Hierarchy (Computer Architecture & Logic)