• 内存管理

    内存管理

    V语言没有自动内存回收(GC)和引用计数。V语言会在编译阶段完成必要的清理工作。例如:

    1. fn draw_text(s string, x, y int) {
    2. ...
    3. }
    4. fn draw_scene() {
    5. ...
    6. draw_text('hello $name1', 10, 10)
    7. draw_text('hello $name2', 100, 10)
    8. draw_text(strings.repeat('X', 10000), 10, 50)
    9. ...
    10. }

    因为字符串没有从draw_text函数逃逸,因此函数调用返回之后就可以被清理。实际上这几个函数调用不会产生任何内存分配的行为。因为两个字符串比较小,V语言会使用提前准备好的缓冲区构造字符串。

    对于复杂的情况,目前还需要手工管理内存。但是我们将很快解决这个问题。

    V语言运行时会检测内存泄露并报告结果。要释放数组,可以使用free()方法:

    1. numbers := [0; 1000000]
    2. ...
    3. numbers.free()