In release mode, switch from page_allocator to c_allocator

This commit is contained in:
Karl Seguin
2025-02-17 16:08:26 +08:00
parent a2932f05f4
commit 4dbba103d4

View File

@@ -202,23 +202,13 @@ pub fn main() !void {
// allocator // allocator
// - in Debug mode we use the General Purpose Allocator to detect memory leaks // - in Debug mode we use the General Purpose Allocator to detect memory leaks
// - in Release mode we use the page allocator // - in Release mode we use the c allocator
var alloc: std.mem.Allocator = undefined; var gpa = std.heap.GeneralPurposeAllocator(.{}){};
var _gpa: ?std.heap.GeneralPurposeAllocator(.{}) = null; const alloc = if (builtin.mode == .Debug) gpa.allocator() else std.heap.c_allocator;
if (builtin.mode == .Debug) {
_gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer if (builtin.mode == .Debug) {
alloc = _gpa.?.allocator(); _ = gpa.detectLeaks();
} else { };
alloc = std.heap.page_allocator;
}
defer {
if (_gpa) |*gpa| {
switch (gpa.deinit()) {
.ok => std.debug.print("No memory leaks\n", .{}),
.leak => @panic("Memory leak"),
}
}
}
// args // args
var args: std.process.ArgIterator = undefined; var args: std.process.ArgIterator = undefined;