C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■91519 / 3階層)  メモリリークに関して
□投稿者/ WebSurfer (1853回)-(2019/07/03(Wed) 11:43:19)
No91517 (kiku さん) に返信

自信度は高くなく間違っているかもしれませんので、以下のレスはそのつもりで見てください。

> 通常下記2でVusualStudiooの自動生成されたソース内の
> Control.Addされるため、Control.Dispose内で自動的に
> マネージドリソースもdisposeされる認識でした。

Form コントロールの場合、Dispose(), Dispose(bool) の実装は Control toha違うようです。
下のリンクをクリックして画像を見てください。

http://surferonwww.info/BlogEngine/image.axd?picture=2019%2f7%2fFormDispose0.jpg

VS2008 のヘルプの画像ですが、このあたりはたぶん最新版でも同じはずです。Form に実装され
ている Dispose() と Dispose(boolean) は上の画像の一番上と一番下のものです。

一番下の Form.Dispose (Boolean) メソッドには CE がサポートしているというアイコンがない
のに注目してください。

CE はどうしているかは不明ですが、魔界の仮面弁士さんのレスにある Control.Dispose(bool)
メソッド(画像の上から 3 番目のもの)を使っているのではなかろうかと思われます。

そうであれば、Dispose パターンが実装されていれば、Dispose メソッドを呼び出せば上の画像の
ヘルプの Control.Dispose(Boolean) メソッドの解説に書いてあったように、

"Control とその子コントロールが使用しているアンマネージ リソースを解放します。オプションで、
マネージ リソースも解放します。"

・・・となると思われます。


CE は関係なさそうですが、ご参考までに上の画像のヘルプの Form.Dispose メソッド (Boolean)
の解説の抜粋も書いておきますね。

*** Quote ***
Form で使用されていたリソース (メモリを除く) を解放します。

このメソッドは、パブリック メソッド Dispose と Finalize メソッドによって呼び出されます。
Dispose は、disposing パラメータに true を設定して、プロテクト メソッド Dispose(Boolean)
を呼び出します。Finalize は、disposing に false を設定して、Dispose を呼び出します。

disposing パラメータが true の場合、このメソッドは、この Form から参照されるすべての
マネージ オブジェクトが保持しているリソースをすべて解放します。このメソッドは、参照
される各オブジェクトの Dispose メソッドを呼び出します。

Dispose は、フォームが Show メソッドを使用して表示した場合に自動的に呼び出されます。
ShowDialog などの別のメソッドを使用する場合、またはフォームがまったく表示されない場合は、
アプリケーション内で Dispose を明示的に呼び出す必要があります。
*** Unqoute ***

ちなみに、CE 版でない通常の Windows Forms アプリが Form.Dispose (Boolean) メソッドを
使っていることは間違いなさそうです。

http://surferonwww.info/BlogEngine/image.axd?picture=2019%2f7%2fFormDispose1.jpg

質問者さんの CE 版の場合はどうなってるでしょう?
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←Re[2]: メモリリークに関して /kiku →Re[4]: メモリリークに関して /kiku
→Re[4]: メモリリークに関して /魔界の仮面弁士
 
上記関連ツリー

メモリリークに関して / kiku (19/07/02(Tue) 17:06) #91509
Re[1]: メモリリークに関して / PANG2 (19/07/02(Tue) 17:53) #91511
│└ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:06) #91516
Re[1]: メモリリークに関して / WebSurfer (19/07/02(Tue) 18:32) #91513
│└ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:10) #91517
│  └ メモリリークに関して / WebSurfer (19/07/03(Wed) 11:43) #91519 ←Now
│    ├ Re[4]: メモリリークに関して / kiku (19/07/03(Wed) 13:26) #91521
│    │└ Re[5]: メモリリークに関して / WebSurfer (19/07/03(Wed) 14:40) #91522
│    │  └ Re[6]: メモリリークに関して / kiku (19/07/03(Wed) 17:09) #91526
│    └ Re[4]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 17:07) #91525
│      └ Re[5]: メモリリークに関して / kiku (19/07/03(Wed) 17:43) #91528
│        └ Re[6]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 19:37) #91530
│          ├ Re[7]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 09:13) #91534
│          │└ Re[8]: メモリリークに関して / kiku (19/07/04(Thu) 09:33) #91536
│          └ Re[7]: メモリリークに関して / kiku (19/07/04(Thu) 09:08) #91533
│            └ Re[8]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 09:59) #91537
│              └ Re[9]: メモリリークに関して / kiku (19/07/04(Thu) 10:46) #91538
│                └ Re[10]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 12:11) #91539
│                  └ Re[11]: メモリリークに関して / kiku (19/07/04(Thu) 13:13) #91540
│                    └ Re[12]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 15:18) #91541
│                      ├ Re[13]: メモリリークに関して / 魔界の仮面弁士 (19/07/04(Thu) 15:26) #91543
│                      │└ Re[14]: メモリリークに関して / kiku (19/07/04(Thu) 16:12) #91545
│                      │  └ Re[15]: メモリリークに関して / kiku (19/07/04(Thu) 16:14) #91546
│                      │    └ Re[16]: メモリリークに関して / kiku (19/07/08(Mon) 11:36) #91569
│                      │      ├ Re[17]: メモリリークに関して / kiku (19/07/08(Mon) 11:36) #91570 解決済み
│                      │      └ Re[17]: メモリリークに関して / 魔界の仮面弁士 (19/07/08(Mon) 14:19) #91571 解決済み
│                      │        └ Re[18]: メモリリークに関して / kiku (19/07/09(Tue) 10:26) #91572 解決済み
│                      │          └ Re[19]: メモリリークに関して / shu (19/07/10(Wed) 15:55) #91585 解決済み
│                      │            ├ Re[20]: メモリリークに関して / 魔界の仮面弁士 (19/07/10(Wed) 16:37) #91586 解決済み
│                      │            │└ Re[21]: メモリリークに関して / kiku (19/07/11(Thu) 08:49) #91588 解決済み
│                      │            └ Re[20]: メモリリークに関して / kiku (19/07/11(Thu) 08:43) #91587 解決済み
│                      └ Re[13]: メモリリークに関して / kiku (19/07/04(Thu) 16:08) #91544
Re[1]: メモリリークに関して / 魔界の仮面弁士 (19/07/02(Tue) 20:22) #91515
  └ Re[2]: メモリリークに関して / kiku (19/07/03(Wed) 09:14) #91518
    ├ Re[3]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 13:17) #91520
    │└ Re[4]: メモリリークに関して / kiku (19/07/03(Wed) 16:50) #91523
    │  ├ Re[5]: メモリリークに関して / Hongliang (19/07/03(Wed) 17:04) #91524
    │  │└ Re[6]: メモリリークに関して / kiku (19/07/03(Wed) 17:20) #91527
    │  └ Re[5]: メモリリークに関して / PANG2 (19/07/03(Wed) 23:35) #91531
    │    └ Re[6]: メモリリークに関して / kiku (19/07/04(Thu) 09:23) #91535
    └ Re[3]: メモリリークに関して / 魔界の仮面弁士 (19/07/03(Wed) 19:14) #91529
      └ Re[4]: メモリリークに関して / kiku (19/07/04(Thu) 09:00) #91532

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信