diff --git a/src/memory-management/comparison.md b/src/memory-management/comparison.md index 91c00d9f..8d8055f7 100644 --- a/src/memory-management/comparison.md +++ b/src/memory-management/comparison.md @@ -4,31 +4,31 @@ Here is a rough comparison of the memory management techniques. ## Pros of Different Memory Management Techniques -* Manual like C - * No runtime overhead -* Automatic like Java - * Fully automatic - * Safe and correct -* Scope-based like C++ - * Partially automatic - * No runtime overhead -* Compiler-enforced scope-based like Rust - * Enforced by compiler - * No runtime overhead - * Safe and correct +* Manual like C: + * No runtime overhead. +* Automatic like Java: + * Fully automatic. + * Safe and correct. +* Scope-based like C++: + * Partially automatic. + * No runtime overhead. +* Compiler-enforced scope-based like Rust: + * Enforced by compiler. + * No runtime overhead. + * Safe and correct. ## Cons of Different Memory Management Techniques * Manual like C: - * Use-after-free - * Double-frees - * Memory leaks -* Automatic like Java - * Garbage collection pauses - * Destructors delays -* Scope-based like C++ - * Complex, opt-in by programmer - * Potential for use-after-free -* Compiler-enforced and scope-based like Rust - * Some upfront complexity - * Can reject valid programs + * Use-after-free. + * Double-frees. + * Memory leaks. +* Automatic like Java: + * Garbage collection pauses. + * Destructors delays. +* Scope-based like C++: + * Complex, opt-in by programmer. + * Potential for use-after-free. +* Compiler-enforced and scope-based like Rust: + * Some upfront complexity. + * Can reject valid programs.