Half PencilUser said:
Zig中 arrayhashmap 如果我替换一个Key的值 之后,原来的值会自动被内存回收吗
ChatGPT said:
在 Zig 中,如果你使用的是 std.AutoHashMap 或 std.ArrayHashMap 并替换了某个 key 对应的值:
🔥 Zig 并不会自动回收原来的值所使用的内存,除非你手动释放!
我每用一个函数都要问问GPT内存问题, 😂
const std = @import("std");
const allocator = std.heap.c_allocator;
pub fn main() !void {
// 省略
// The put() function returns the old entry
const old_entry = try map.put(key, value2);
std.debug.print("Replaced with value: {d}\n", .{value2.*});
// 3. Manually free the old value
if (old_entry) |entry| {
std.debug.print("Old value was: {d}\n", .{entry.value.*});
allocator.destroy(entry.value); // You MUST do this!
}
}