mirror of
https://github.com/odin-lang/Odin.git
synced 2026-04-18 20:40:28 +00:00
[mem]: Update package documentation
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
The `mem` package implements various allocators and provides utility functions
|
||||
The `mem` package implements various allocators and provides utility procedures
|
||||
for dealing with memory, pointers and slices.
|
||||
|
||||
The documentation below describes basic concepts, applicable to the `mem`
|
||||
@@ -24,7 +24,7 @@ access operation*.
|
||||
## Allocators
|
||||
|
||||
In C and C++ memory models, allocations of objects in memory are typically
|
||||
treated individually with a generic allocator (The `malloc` function). Which in
|
||||
treated individually with a generic allocator (The `malloc` procedure). Which in
|
||||
some scenarios can lead to poor cache utilization, slowdowns on individual
|
||||
objects' memory management and growing complexity of the code needing to keep
|
||||
track of the pointers and their lifetimes.
|
||||
@@ -45,7 +45,7 @@ allocators on a language level.
|
||||
|
||||
Operations such as `new`, `free` and `delete` by default will use
|
||||
`context.allocator`, which can be overridden by the user. When an override
|
||||
happens all called functions will inherit the new context and use the same
|
||||
happens all called procedures will inherit the new context and use the same
|
||||
allocator.
|
||||
|
||||
## Alignment
|
||||
@@ -89,7 +89,17 @@ relatively expensive zero-filling of the buffer.
|
||||
The word `size` is used to denote the **size in bytes**. The word `length` is
|
||||
used to denote the count of objects.
|
||||
|
||||
Higher-level allocation functions follow the following naming scheme:
|
||||
The allocation procedures use the following conventions:
|
||||
|
||||
- If the name contains `alloc_bytes` or `resize_bytes`, then the procedure takes
|
||||
in slice parameters and returns slices.
|
||||
- If the procedure name contains `alloc` or `resize`, then the procedure takes
|
||||
in a raw pointer and returns raw pointers.
|
||||
- If the procedure name contains `free_bytes`, then the procedure takes in a
|
||||
slice.
|
||||
- If the procedure name contains `free`, then the procedure takes in a pointer.
|
||||
|
||||
Higher-level allocation procedures follow the following naming scheme:
|
||||
|
||||
- `new`: Allocates a single object
|
||||
- `free`: Free a single object (opposite of `new`)
|
||||
|
||||
Reference in New Issue
Block a user