トップページ > プログラム > 2015年02月06日 > g953HKX2

書き込み順位&時間帯一覧

4 位/142 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000002110004



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part114©2ch.net

書き込みレス一覧

ふらっと 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だとこんな感じですね


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。