2012-07-11 3 views
2

Ошибка: полученныйAnonymous Функция утечкам памяти

$ 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) 

Ржавчина код (уменьшенная TestCase):

use std; 

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

fn createClosure (closedUint: uint) -> boxedFn { 
    { theFn: [email protected]() -> uint { closedUint } } 
} 

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

    let myInt: uint = aFn.theFn(); 

    assert myInt == 10; 
} 

Почему этот утечка памяти?

ответ

3

В любое время, когда вы видите утечку памяти, это ошибка в Rust (если вы не обманываете себя с помощью собственного кода ... и в этом случае наши детекторы утечки, вероятно, не найдут его). В этом случае это номер # 1896.

0

Основная ошибка в приведенном выше коде состоит в том, что записи не могут выполнять неограниченные функции. Переключение типа с fn на fn @, приведенный выше фрагмент работает.

Смежные вопросы