簡體   English   中英

C#中的sizeof空字符串

[英]sizeof empty string in C#

在Java中,空字符串是40個字節。 在Python中它是20個字節。 C#中的空字符串對象有多大? 我不能做sizeof ,我不知道怎么回事。 謝謝。

這是18個字節

16個字節的內存+每個字符分配2個字節+ 2個字節用於最終的空字符。

請注意,這是關於.Net 1.1的。

在.Net 4.0中刪除了m_ArrayLength字段(您可以在參考源中看到這一點)

CLR版本很重要。 在.NET 4之前,字符串對象有一個額外的4字節字段,用於存儲“capacity”,m_arrayLength字段。 該字段在.NET 4中不再存在。它具有標准對象頭,同步塊為4個字節,方法表指針為4個字節。 然后是4個字節來存儲字符串長度(m_stringLength),后面跟着字符串中每個字符的2個字節。 並使用0 char使其與本機代碼兼容。 對象總是4個字節長的倍數,最小16個字節。

因此,空字符串是4 + 4 + 4 + 2 = 14字節,在.NET 4.0上四舍五入為16字節。 早期版本的20個字節。 給定的值是x86。 這在調試器中非常明顯,請查看此答案以獲取提示。

Jon Skeet最近寫了一篇關於這個主題的文章

在x86上,空字符串是16個字節,而在x64上,它是32個字節

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM