Skip to content

Commit

Permalink
In release mode, switch from page_allocator to c_allocator
Browse files Browse the repository at this point in the history
  • Loading branch information
karlseguin committed Feb 20, 2025
1 parent a2932f0 commit 4dbba10
Showing 1 changed file with 7 additions and 17 deletions.
24 changes: 7 additions & 17 deletions src/main.zig
Original file line number Diff line number Diff line change
Expand Up @@ -202,23 +202,13 @@ pub fn main() !void {

// allocator
// - in Debug mode we use the General Purpose Allocator to detect memory leaks
// - in Release mode we use the page allocator
var alloc: std.mem.Allocator = undefined;
var _gpa: ?std.heap.GeneralPurposeAllocator(.{}) = null;
if (builtin.mode == .Debug) {
_gpa = std.heap.GeneralPurposeAllocator(.{}){};
alloc = _gpa.?.allocator();
} 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"),
}
}
}
// - in Release mode we use the c allocator
var gpa = std.heap.GeneralPurposeAllocator(.{}){};
const alloc = if (builtin.mode == .Debug) gpa.allocator() else std.heap.c_allocator;

defer if (builtin.mode == .Debug) {
_ = gpa.detectLeaks();
};

// args
var args: std.process.ArgIterator = undefined;
Expand Down

0 comments on commit 4dbba10

Please sign in to comment.