Zig 0.17.0-dev (Split by item)
This is an example of documentation generated by
ZigDoc , an alternative to Zig's built-in
Auto Doc feature. See also
examples in other modes/formats . The project being documented here (as the example) is the Zig library itself.
Zig › std/ › heap.zig › testAllocatorLargeAlignment
testAllocatorLargeAlignment
heap.testAllocatorLargeAlignment
pub fn testAllocatorLargeAlignment (base_allocator : mem .Allocator ) !void
File
Code
pub fn testAllocatorLargeAlignment (base_allocator : mem .Allocator ) !void {
var validationAllocator = mem .validationWrap (base_allocator );
const allocator = validationAllocator .allocator ();
const large_align : usize = page_size_min / 2 ;
var align_mask : usize = undefined ;
align_mask = @shlWithOverflow (~@as (usize , 0 ), @as (Allocator .Log2Align , @ctz (large_align )))[0 ];
var slice = try allocator .alignedAlloc (u8 , .fromByteUnits (large_align ), 500 );
try testing .expect (@intFromPtr (slice .ptr ) & align_mask == @intFromPtr (slice .ptr ));
if (allocator .resize (slice , 100 )) {
slice = slice [0 ..100 ];
}
slice = try allocator .realloc (slice , 5000 );
try testing .expect (@intFromPtr (slice .ptr ) & align_mask == @intFromPtr (slice .ptr ));
if (allocator .resize (slice , 10 )) {
slice = slice [0 ..10 ];
}
slice = try allocator .realloc (slice , 20000 );
try testing .expect (@intFromPtr (slice .ptr ) & align_mask == @intFromPtr (slice .ptr ));
allocator .free (slice );
}