free
Free an array allocated with alloc.
If memory has length 0, free is a no-op.
To free a single item, see destroy.
Function parameters
Parameters
Type definitions in this namespace
Types
Functions in this namespace
Functions
- rawAlloc
- This function is not intended to be called except from within the
- rawResize
- This function is not intended to be called except from within the
- rawRemap
- This function is not intended to be called except from within the
- rawFree
- This function is not intended to be called except from within the
- create
- Returns a pointer to undefined memory.
- destroy
- `ptr` should be the return value of `create`, or otherwise
- alloc
- Allocates an array of `n` items of type `T` and sets all the
- allocSentinel
- Allocates an array of `n + 1` items of type `T` and sets the first `n`
- resize
- Request to modify the size of an allocation.
- remap
- Request to modify the size of an allocation, allowing relocation.
- realloc
- This function requests a new size for an existing allocation, which
- free
- Free an array allocated with `alloc`.
- dupe
- Copies `m` to newly allocated memory.
- dupeZ
- Copies `m` to newly allocated memory, with a null-terminated element.
Error sets in this namespace
Error Sets
Source
Implementation
pub fn free(self: Allocator, memory: anytype) void {
const Slice = @typeInfo(@TypeOf(memory)).pointer;
const bytes = mem.sliceAsBytes(memory);
const bytes_len = bytes.len + if (Slice.sentinel() != null) @sizeOf(Slice.child) else 0;
if (bytes_len == 0) return;
const non_const_ptr = @constCast(bytes.ptr);
@memset(non_const_ptr[0..bytes_len], undefined);
self.rawFree(non_const_ptr[0..bytes_len], .fromByteUnits(Slice.alignment), @returnAddress());
}