- ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
511 :デフォルトの名無しさん[sage]:2015/02/06(金) 18:40:50.95 ID:g953HKX2 - >>509
ありがとうございます 一応newにつていもしっかり勉強しておきたいと思ってます
| - ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
512 :デフォルトの名無しさん[sage]:2015/02/06(金) 18:48:34.78 ID:g953HKX2 - これはC#に限らず、昔から長年の疑問ではあったんですが
メンバ変数を持たないインスタンスのサイズってどうなります? object o = new Foo()するとき、左辺はまぁ参照型変数がスタックなり メンバ変数の場合はヒープに確保される、まあそれはいんです 右辺はnewによってヒープに容量が割かれる、そのサイズは? public class A {} public class B {byte b;} public class C {int i;} // 戻り値 マネージ メモリに現在割り当てられているバイト数の近似値を表す値数。 long a = System.GC.GetTotalMemory(true); object oa = new A(); long b = System.GC.GetTotalMemory(true); object ob = new B(); long c = System.GC.GetTotalMemory(true); object oc = new C(); long d = System.GC.GetTotalMemory(true); long _a = b - a; // 12 long _b = c - b; // 12 long _c = d - c; // 12 手元の環境じゃあこんな感じ System.GC.GetTotalMemoryが大雑把な値を返すのか それともnewする際には大雑把に要領を取るのか…
| - ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
513 :デフォルトの名無しさん[sage]:2015/02/06(金) 19:03:26.65 ID:g953HKX2 - http://ideone.com/1djT0A
どうもこれじゃあダメっぽい 無念
| - ふらっと C#,C♯,C#(初心者用) Part114©2ch.net
516 :デフォルトの名無しさん[sage]:2015/02/06(金) 20:59:33.39 ID:g953HKX2 - >>514
うおおお!! ナイス情報ありがとうございます! この人の例でも12バイトに収まってますね 4バイト境界で確保 最低は12バイトで メンバ変数int一個分までは12のまま収まる、と 12バイトもか…そうか12バイトか… >>515 https://ideone.com/s0PDl3 mono-3.10だとこんな感じですね
|
|