[過去ログ] ふらっと C#,C♯,C#(初心者用) Part154 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
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
}
であることをご存知でない?
292: (ワッチョイ 51d2-3X4l) 2022/03/22(火)21:46 ID:OaCGWLhd0(6/8) AAS
C#を欠陥言語呼ばわりするだけあってGCが何かすら知らないアホの子だったとさ。
ヤレヤレ ┐(´ー`)┌ マイッタネ
293: (ワッチョイ 8bbb-216p) 2022/03/22(火)21:51 ID:kAgwAO/L0(9/9) AAS
>>289
言語自体の実装は見たこと無いからサパーリ
せやから解説とかしてる人いないのかなって
294
(1): (ワッチョイ 2979-zSlE) 2022/03/22(火)21:52 ID:kPYOUkgu0(2/2) AAS
>>283
されねーんじゃねーか?
俺はあふれるまで動かないって言ってるじゃん

msdnより

ガベージ コレクションの条件
ガベージ コレクションは、次のいずれかの条件に当てはまる場合に発生します。

システムの物理メモリが少ない場合。 OS からのメモリ不足通知またはホストによって示されたメモリ不足のいずれかによって検出されます。

マネージド ヒープで割り当てられたオブジェクトによって使用されているメモリが、許容されるしきい値を超える場合。 このしきい値は、プロセスの進行に合わせて絶えず調整されます。

GC.Collect メソッドが呼び出されます。 ほとんどの場合、ガベージ コレクターは継続して実行されるため、このメソッドを呼び出す必要はありません。 このメソッドは、主に特別な状況やテストで使用されます。
295: (ワッチョイ 8bcf-noGs) 2022/03/22(火)21:53 ID:0A7XAa2y0(2/2) AAS
>>291
スコープを外れたときに自動的にDispose()が呼ばれるから問題ないってことなんだが。
296: (スップ Sd73-2DeC) 2022/03/22(火)22:22 ID:1zUmccnld(3/3) AAS
>>288
お前はメモリとかリソースの管理を他の言語でどうしてるかもっと勉強するべきだ

C/C++がユーザーに全部丸投げしてるのがいい加減辛いので言語側が管理すればいいんじゃね?ってのがGC。
GCの方式で主流なのは参照カウント方式とマークアンドスイープ方式。
参照カウント方式は循環参照(this._obj=this)があると回収されないから、
C#多少大きめのコストを支払ってでもマークアンドスイープ方式にした。

リソース解放のタイミングをコントロールしたけりゃIDisposable使え
解放漏れの保険でファイナライザ使え
外部リンク[html]:ufcpp.net

C#1.0のリリースが2002/02だから当時はそれでも充分だったんだろう
1-
あと 706 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.018s