From cba71f4a60b7af69946e6dd6cc50adbbc37cf11c Mon Sep 17 00:00:00 2001 From: aprilnightk Date: Sat, 6 Sep 2025 21:09:17 +0300 Subject: [PATCH] deallocation fix --- zigsonnum/soundnode.zig | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/zigsonnum/soundnode.zig b/zigsonnum/soundnode.zig index f98e446..d980ed0 100644 --- a/zigsonnum/soundnode.zig +++ b/zigsonnum/soundnode.zig @@ -16,6 +16,8 @@ const prnt = utility.prnt; pub const SoundNode = struct { + allocator: Allocator, + name: []const u8 = "soundnode", location: Pnt = Pnt{.x = 0, .y = 0, .z = 0}, @@ -26,23 +28,28 @@ pub const SoundNode = struct { pub fn init(allocator: Allocator, name: []const u8) !SoundNode { - var air_in = ArrayList(*SoundNode).init(allocator); - defer air_in.deinit(); - - var wire_in = ArrayList(*SoundNode).init(allocator); - defer wire_in.deinit(); - - var freqmap = AutoHashMap(u64, f16).init(allocator); - defer freqmap.deinit(); + const air_in = ArrayList(*SoundNode).init(allocator); + const wire_in = ArrayList(*SoundNode).init(allocator); + const freqmap = AutoHashMap(u64, f16).init(allocator); return .{ + .allocator = allocator, + .name = name, .air_in = air_in, .wire_in = wire_in, - .name = name, .freqmap = freqmap, }; + + } + + pub fn deinit(self: *SoundNode) void { + + self.air_in.deinit(); + self.wire_in.deinit(); + self.freqmap.deinit(); } + }; pub fn singleSineTick(st: *SoundSettings, freq: f16, t: u64) f64 { @@ -56,7 +63,11 @@ pub fn main() !void { const allocator = gpa.allocator(); var sn1: SoundNode = try SoundNode.init(allocator, "left_sink"); + defer sn1.deinit(); + var sn2: SoundNode = try SoundNode.init(allocator, "right_sink"); + defer sn2.deinit(); + sn2.location.x = -5; sn1.location.x = 4; try sn1.air_in.append(&sn2);