内存管理
V语言没有自动内存回收(GC)和引用计数。V语言会在编译阶段完成必要的清理工作。例如:
fn draw_text(s string, x, y int) {
...
}
fn draw_scene() {
...
draw_text('hello $name1', 10, 10)
draw_text('hello $name2', 100, 10)
draw_text(strings.repeat('X', 10000), 10, 50)
...
}
因为字符串没有从draw_text
函数逃逸,因此函数调用返回之后就可以被清理。实际上这几个函数调用不会产生任何内存分配的行为。因为两个字符串比较小,V语言会使用提前准备好的缓冲区构造字符串。
对于复杂的情况,目前还需要手工管理内存。但是我们将很快解决这个问题。
V语言运行时会检测内存泄露并报告结果。要释放数组,可以使用free()
方法:
numbers := [0; 1000000]
...
numbers.free()