2020年4月23日木曜日

GetFontStream() 解放する?しない?

こうした
using (System.IO.Stream gfs = m_typeface.GetFontStream())   
{
   XXXX
}
これでよいという確実な根拠はないのですが、使ったものは解放したほうが良いのだろうと思い、usingを使ってます。

気になった点は、自分でnewしていないので、usingで解放されるのか?

逆に勝手に解放してよいのか?という点も気になりました。


(気になった点①)Usingで解放されるか逆コンパイルして確認する
下記のサイトを参考に確認しました。

初期化なしのusing文ってOK?

初めて逆コンパイルしたので、自分へのメモも兼ねてやり方も記載してます。

(1)スタートメニュー → Visual Studio 2019
→ Developer Command Prompt for VS 2019 を起動する。


(2)ildasmと入力してEnter


(3)IL DASMというツールが起動するので、ここに作成したexeをD&Dする。
(4)確認したいメソッドをダブルクリックすると、コードを確認できる。

(5)Disposeが呼ばれているので、おそらく解放してくれるのではないかと思う。


(気になった点②)自分でnewしたオブジェクトではないけど解放して大丈夫か?
解放した後に、getしてみたけど、例外が飛んだりしないので大丈夫なのかな?
            System.IO.Stream gfs = m_typeface.GetFontStream();
            gfs.Close();
            gfs.Dispose();
            gfs = m_typeface.GetFontStream();
0 件のコメント:
コメントを投稿