[過去ログ] ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
262: (ワッチョイ f154-B0ie) 2022/03/22(火)03:13 ID:dk64x/8s0(1) AAS
Disposeパターンの学習中なのですが、マネージリソースとアンマネージリソースの見分け方が分からないのですが、
よい解説サイトを教えて頂けないでしょうか。
263(2): (アウアウウー Sa5d-580B) 2022/03/22(火)03:27 ID:Fi74risNa(1/2) AAS
難しく考えることない。この程度の見分け方で十分だろ
class A : IDispose ←宣言を見たときにIDispose派生ならアンマネージド
A a = 〜
a. ←「.」を打ち込んだ時にDisposeが表示されたらアンマネージド
using (var a = new 〜) ←usingで囲んでエラー出たらマネージド
264: (アウグロ MM63-zSlE) 2022/03/22(火)07:12 ID:p81GCeRAM(1) AAS
Disposeの中身が
MessageBox("error",MB_ICONERROR);
のみでアンマネージド?
265: (アウアウウー Sa5d-580B) 2022/03/22(火)08:11 ID:Fi74risNa(2/2) AAS
Disposeの中身が空でもアンマネージなんだよ。細かいこと気にするな
266(1): (ワッチョイ 8bbb-216p) 2022/03/22(火)08:33 ID:kAgwAO/L0(1/9) AAS
いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語
267(1): (ワッチョイ 51d2-3X4l) 2022/03/22(火)08:35 ID:OaCGWLhd0(1/8) AAS
win32リソースかどうかなんか用途ですぐわかるだろ…
268: (ワッチョイ 8bbb-216p) 2022/03/22(火)08:39 ID:kAgwAO/L0(2/9) AAS
書いてから気づいた>>263の方法で確認すりゃまだ楽か
だがしかし、実装を強制できないからdisposeしてなくても気づけないってのがな
269: (ワッチョイ 8bbb-216p) 2022/03/22(火)08:41 ID:kAgwAO/L0(3/9) AAS
>>267
そんなの場合による
270(1): (ワッチョイ 51d2-3X4l) 2022/03/22(火)08:51 ID:OaCGWLhd0(2/8) AAS
キミのように脳に欠陥があるなら仕方がない。使い終わったら常にdispose()呼ぶだけの話。
271: (ワッチョイ 8bbb-216p) 2022/03/22(火)09:03 ID:kAgwAO/L0(4/9) AAS
>>270
草
272: (ワッチョイ 51d2-3X4l) 2022/03/22(火)09:22 ID:OaCGWLhd0(3/8) AAS
( ´_ゝ`)プッ
273(1): (ワッチョイ 8bbb-216p) 2022/03/22(火)10:11 ID:kAgwAO/L0(5/9) AAS
使い終わったら常にdispose()呼ぶだけ!キリッ
話の本質わかってなくて草生える
274: (ワッチョイ 132c-P46e) 2022/03/22(火)10:34 ID:G7lfoYcY0(1) AAS
Disposeでマネージ/アンマネージってことは
protected virtual Dispose(bool disposing)
のdisposingの真偽で何を解放すべきかってことだよね
.NETのオブジェクトとして存在しているモノがマネージリソース
大体は自分がメンバに持ってるIDisposableなオブジェクトを意味する
これらはdisposing==trueのときだけDisposeすればいい
アンマネージリソースはWindowsのAPIとかで直接確保したデバイスコンテキストとかメモリ
大抵はIntPtr型で保持している
こういうのはそれぞれのリソースの解放方法に従った方法で直接解放する
これらはdisposingに関わらず常に解放する
275(1): (ワッチョイ 51d2-3X4l) 2022/03/22(火)10:35 ID:OaCGWLhd0(4/8) AAS
> いちいち継承元全部辿ってIDisposableあるか確認して手動で開放しないとリークしまーすとかいう欠陥言語
分かってるよ。話の本質は、馬鹿がヘジが開発した言語にマウンティングした、ということだろう。
だがその試みは失敗した。それだけ。
なんならwin32リソースについて言語はどう管理すべきいくらでもキミの意見を語っていいんだぜ?
だがキミからは何も出てこない。知ったか初心者だからだ。
276: (ブーイモ MMeb-n2Eo) 2022/03/22(火)11:53 ID:myN/pITuM(1) AAS
そうカッカすんなよおっさん見苦しいぞ
277: (ワッチョイ 8bbb-216p) 2022/03/22(火)12:15 ID:kAgwAO/L0(6/9) AAS
>>275
顔真っ赤で草
278: (ワッチョイ 51d2-3X4l) 2022/03/22(火)12:31 ID:OaCGWLhd0(5/8) AAS
初歩的なリソース管理程度で発狂して言語貶してるド初心者に
馬鹿にされてキレるわけないだろう。馬鹿かこいつ、としか思わん。
279: (ワッチョイ 8b63-whB1) 2022/03/22(火)15:52 ID:XhX0v2Lu0(1) AAS
その調子で血管切って死なねーかな
280: (テテンテンテン MMeb-zKmY) 2022/03/22(火)17:16 ID:pk95uqSaM(1) AAS
あああああああああああああああああああああああああああああああ!!!!!!!!!!!(ブリブリブリブリュリュリュリュリュリュ!!!!!!ブツチチブブブチチチチブリリイリブブブブゥゥゥゥッッッ!!!!!!!)
281: (ワッチョイ 2979-zSlE) 2022/03/22(火)19:17 ID:kPYOUkgu0(1/2) AAS
そもそもc#のデストラクタが産廃だからあてにしてる動作だろ
282(1): (スップ Sd73-2DeC) 2022/03/22(火)19:49 ID:1zUmccnld(1/3) AAS
GC(マークアンドスイープ)+FinalizeとDisposeの相性が悪いだけだろ
C#に限った話じゃない
283(1): (ワッチョイ 4901-cTkz) 2022/03/22(火)20:58 ID:hNvbiY4S0(1) AAS
exe終了したら何もかも解放されるんでしょ?
284: (アウアウウー Sa5d-580B) 2022/03/22(火)21:05 ID:HvRJN3MAa(1) AAS
基本的には終了で開放だけど、すべてが開放されるとは限らない
よくあるのがexe内部でexcel使ったら、exe終了してもexcelのプロセス残ったままみたいなやつ
285(1): (ワッチョイ 8bbb-216p) 2022/03/22(火)21:09 ID:kAgwAO/L0(7/9) AAS
ようやく>>282みたいなまともな回答出てきて嬉しい
スコープ外れたタイミングでデストラクタ呼び出し保証しなかった理由ってどこかに解説とかないのかな?
C#の現状のデストラクタとかガチゴミじゃん
286: (テテンテンテン MMeb-NT4g) 2022/03/22(火)21:19 ID:Ky9cYioTM(1/5) AAS
またいつもの質問者そっちのけでの罵倒合戦かよ・・・・・
アンマネージドリソースは文字通りC#の管理下にない(un-managedな)リソース
具体的にはunsafeで確保した配列・ポインタやWin32APIを呼び出して確保したIntPtrなど
Disposeのタイミングで適切な手法で(それこそWin32APIを呼ぶなどして)リソース解放しないとメモリリークする
マネージドリソースはC#の管理下にあるリソース全般
FileStreamやDbConnection、Bitmapオブジェクトなどもこれ
そういうオブジェクトをクラス内のメンバ変数で持ってるなら、Disposeメソッド内で
それらのメンバ変数のDispose()を呼ぶことでリソース解放するお約束になってる
>>263の説明はデタラメもいいとこだしそもそも「IDispose」ってなんだよ
>>263のデタラメに気付かずC#を欠陥言語呼ばわりするために乗っかった>>266の言ってることも同じくデタラメなんだけど
こいつは罵倒マウンティングすること自体が目的でわざとデタラメに乗ってるのかそれとも素で理解してないのかは分からん
287(1): (ワッチョイ 8bcf-noGs) 2022/03/22(火)21:23 ID:0A7XAa2y0(1/2) AAS
C++/CLIならデストラクタが使えるから問題ないんだよな。捨てたのはもったいない。
288(1): (ワッチョイ 8bbb-216p) 2022/03/22(火)21:31 ID:kAgwAO/L0(8/9) AAS
それな
GCとかの仕組み上どうしても無理でしたってんなら納得逝くんだけどその辺知りたい
289(1): (スップ Sd73-foG8) 2022/03/22(火)21:39 ID:6LsnJNlYd(1) AAS
>>285
スコープ外れたってどうやって判断するの?
290: (ワッチョイ f9ac-MdQT) 2022/03/22(火)21:39 ID:3weeWjHs0(1) AAS
というかここら辺はサンプルというか、実際使ってるコードみないとピンとこんよな
これは意味あるIdisposable、こっちは意味ないとかで
291(3): (スップ Sd73-2DeC) 2022/03/22(火)21:41 ID:1zUmccnld(2/3) AAS
>>287
ref class C{
~C(){} // Destructor
!C(){} // Finalizer
};
のコンパイル結果が
// C# DLL
class C:IDisposable{
Dispose(); //Destructor???
~C();//Finalizer
}
であることをご存知でない?
上下前次1-新書関写板覧索設栞歴
あと 711 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.024s