2

得到的错误:

$ rustc leakyFunction.rs --test
$ ./leakyFunction 

running 1 test
test testForLeakage ... Unreclaimed object found at 0xb6d02d98: ((), (10))
leaked memory in rust main loop (1 objects)
leakyFunction: /home/havvy/rust/src/rt/memory_region.cpp:172:
    memory_region::~memory_region(): Assertion `false' failed.
Aborted (core dumped)

锈代码(简化的测试用例):

use std;

type boxedFn = { theFn: fn () -> uint };

fn createClosure (closedUint: uint) -> boxedFn {
    { theFn: fn@ () -> uint { closedUint } }
}

#[test]
fn testForLeakage () {
    let aFn: boxedFn = createClosure(10);

    let myInt: uint = aFn.theFn();

    assert myInt == 10;
}

为什么会泄漏内存?

4

2 回答 2

3

每当您看到内存泄漏时,这就是 Rust 中的一个错误(除非您正在处理本机代码……在这种情况下,我们的泄漏检测器可能找不到它)。在这种情况下,它是问题 #1896。

于 2012-07-11T21:15:51.660 回答
0

上面代码中的主要错误是记录不能不受约束的函数。通过将类型从 fn 切换到 fn@,上面的代码片段就可以工作了。

于 2012-07-15T08:33:12.783 回答