2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Rustで変数に束縛されてない値は生成後すぐに破棄される

Posted at

Rustで、変数に束縛されてない宙ぶらりんな値がメモリから解放されるタイミングがいつなのかなーって気になった。
↓みたいなやつ。

fn f() {
    vec![1, 2];  // こいつの解放タイミングが知りたい

    ()
}

解放時はdropが走るので、適当な構造体にdrop生やして試してみた。

struct Foo(&'static str);

impl Drop for Foo {
    fn drop(&mut self) {
        println!("dropped ({})", self.0);
    }
}

fn f() {
  println!("start");
  
  Foo("宙ぶらりん");
  
  println!("middle");
  
  let foo = Foo("変数束縛");
  
  println!("end");
}

実行結果はこうなりました。

start
dropped (宙ぶらりん)
middle
end
dropped (変数束縛)

PlayGround

宙ぶらりんな値の場合、生成はされるものの次の行では既に破棄されているらしい。
効率的ですね。
疑問が解けてスッキリしました。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?