История изменений
Исправление provaton, (текущая версия) :
грубо говоря после malloc не написали free
От этого раст (частично) предохраняет, когда переменная выходит из своей области видимости память с ней связанная освобождается. Такой вот код не течет:
fn foo() {
loop {
let a = vec![1,2,3];
println!("a is {:?}", a);
// a освобождается здесь
}
}
Но вот такой уже потечет даже без ворнинга от компилятора:
fn foo() {
let vector_of_vectors = Vec::new();
loop {
vector_of_vectors.push(vec![1,2,3]);
println!("vector of vectors is {:?}", vector_of_vectors);
}
}
Исправление provaton, :
грубо говоря после malloc не написали free
От этого раст (частично) предохраняет, когда переменная выходит из своей области видимости память с ней связанная освобождается. Такой вот код не течет:
fn foo() {
loop {
let a = vec![1,2,3];
println!("a is {:?}", a);
// a освобождается здесь
}
}
Но вот такой уже потечет даже без ворнинга от компилятора:
fn foo() {
let vectors_of_vectors = Vec::new();
loop {
vectors_of_vectors.push(vec![1,2,3]);
println!("vector of vectors is {:?}", vector_of_vectors);
}
}
Исходная версия provaton, :
грубо говоря после malloc не написали free
От этого раст (частично) предохраняет, когда переменная выходит из своей области видимости память с ней связанная освобождается. Такой вот код не течет:
[code] fn foo() { loop { let a = vec1,2,3; println!(«a is {:?}», a); // a освобождается здесь } } [/code]
Но вот такой уже потечет даже без ворнинга от компилятора:
[code] fn foo() { let vectors_of_vectors = Vec::new(); loop { vectors_of_vectors.push(vec1,2,3); println!(«vector of vectors is {:?}», vector_of_vectors); } } [/code]