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 standard library.
std › heap › debug_allocator › DebugAllocator › LargeAlloc Private Struct LargeAlloc Doc Source Private Struct std.heap.debug_allocator.DebugAllocator.LargeAlloc
const LargeAlloc = struct Fields bytes : []u8 requested_size : if (config .enable_memory_limit ) usize else void stack_addresses : [trace_n ][stack_n ]usize freed : if (config .retain_metadata ) bool else void alignment : if (config .never_unmap and config .retain_metadata ) mem .Alignment else void Values Functions File heap/debug_allocator.zig: 219
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250 const LargeAlloc = struct {
bytes : []u8 ,
requested_size : if (config .enable_memory_limit ) usize else void ,
stack_addresses : [trace_n ][stack_n ]usize ,
freed : if (config .retain_metadata ) bool else void ,
alignment : if (config .never_unmap and config .retain_metadata ) mem .Alignment else void ,
const trace_n = if (config .retain_metadata ) traces_per_slot else 1 ;
fn dumpStackTrace (self : *LargeAlloc , trace_kind : TraceKind ) void {
std .debug .dumpStackTrace (self .getStackTrace (trace_kind ));
}
fn getStackTrace (self : *LargeAlloc , trace_kind : TraceKind ) std .debug .StackTrace {
assert (@backingInt (trace_kind ) < trace_n );
const stack_addresses = &self .stack_addresses [@backingInt (trace_kind )];
var len : usize = 0 ;
while (len < stack_n and stack_addresses [len ] != 0 ) {
len += 1 ;
}
return .{
.return_addresses = stack_addresses [0 ..len ],
.skipped = if (len < stack_addresses .len ) .none else .unknown ,
};
}
fn captureStackTrace (self : *LargeAlloc , ret_addr : usize , trace_kind : TraceKind ) void {
assert (@backingInt (trace_kind ) < trace_n );
const stack_addresses = &self .stack_addresses [@backingInt (trace_kind )];
collectStackTrace (ret_addr , stack_addresses );
}
}