こうした
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 件のコメント:
コメントを投稿