小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

C#中類的size

 alexwhu 2006-10-17

剛剛看了李建忠老師的 C#和C++/CLI中sizeof操作符討論 因此一直想搞清楚C# 中的class到底占用了多少內(nèi)存。翻閱資料

MSDN:

結(jié)構(gòu)(值類型)的大小被計(jì)算為其字段大小的總和,外加由于將這些字段與其自然邊界對(duì)齊而增加的任何開銷。
引用類型的大小是其字段大小向上舍入到下一個(gè) 4 字節(jié)邊界,外加 8 字節(jié)的開銷。這意味著所有引用類型都至少占用 12 字節(jié),因此在 C# 中,長(zhǎng)度小于 16 字節(jié)的任何對(duì)象作為結(jié)構(gòu)可能更有效一些。

請(qǐng)考慮以下 C# 結(jié)構(gòu)(為簡(jiǎn)單起見(jiàn),我已經(jīng)避免為下列成員指定任何訪問(wèn)修飾符):

struct BadValueType
{
char c1;
int i;
char c2;
}

就像非托管 C++ 中的默認(rèn)封裝一樣,整數(shù)在四字節(jié)邊界上布局,因此盡管第一個(gè)字符使用兩個(gè)字節(jié)(托管代碼中的 char 是 Unicode 字符,因而占據(jù)兩個(gè)字節(jié)),但該整數(shù)向上移動(dòng)至下一個(gè) 4 字節(jié)邊界,并且第二個(gè)字符使用隨后的 2 個(gè)字節(jié)。得到的結(jié)構(gòu)在用 Marshal.SizeOf 度量時(shí)是 12 個(gè)字節(jié)(當(dāng)用在我的 32 位計(jì)算機(jī)上運(yùn)行的 .NET Framework 2.0 上的 sizeof 度量時(shí),也是 12 個(gè)字節(jié))。如果我將其重新組織為如下所示的結(jié)構(gòu),則對(duì)齊方式將如我所愿,從而得到 8 字節(jié)結(jié)構(gòu):

struct GoodValueType
{
int i;
char c1;
char c2;
}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多