下面的 get 函数在我看来就像它返回一个引用数组中数据的切片,一旦函数返回,它将超出范围,因此是错误的。假设这是真的,有没有办法在编译时甚至在调试模式下运行时检测到这一点?
我找不到在编译时或运行时检测到此错误的任何编译器标志,并想知道我是否错过了任何可以提供帮助的东西,或者这不是 zig 目前可以检测到的东西,这很好,我只是必须更加小心:)
这是我遇到的一个实际问题的简化示例,需要一些时间来诊断以证明问题
const std = @import("std");
fn get() []u8 {
var data : [100]u8 = undefined;
return data[0..99];
}
pub fn main() !void {
const data = get();
std.debug.print("Name: [{}]\n", .{data});
}