|
|
|
|
|
by bmacho
620 days ago
|
|
> Although it doesn't have the same level of compile-time guarantees, there are runtime checks to ensure memory safety if you use Debug or ReleaseSafe. it is not very good, as const std = @import("std");
const print = std.debug.print;
fn foo() fn() *u32 {
const T = struct {
fn bar() *u32 {
var x: u32 = 123;
return &x;
}
};
return T.bar;
}
pub fn main() void {
print("Resultt: {}", .{foo()().*});
}
outputs 123 in debug[0] and 0 in ReleaseSafe[1] instead of giving a Runtime Error.[0] https://zig.godbolt.org/z/ezTr3zP6a [1] https://zig.godbolt.org/z/3ExeveT69 |
|