Ran*_*ngy 7 .net memory string .net-4.0
我一直试图弄清楚.NET 4 x64中字符串的开销.这是我到目前为止所得到的.
所以你希望1个字符的字符串是16 + 4 + 4 = 24个字节.它可以被8整除,因此它不需要任何填充.
但是当我查看WinDbg中的大小时,我发现它们占用了32个字节.当我!dumpobject
他们说他们的大小是28字节,这是我假设是四舍五入到32.发生了什么?是否还有另一轮内存对齐?
我怀疑第一个字符在x64上的8字节边界上对齐,因此当作为指向非托管代码的指针传递时,它是一个正确对齐的指针.你的数字肯定适合我最近测量的字符串大小,导致公式:
32 bit: 14 + length * 2 (rounded up to 4 bytes)
64 bit: 26 + length * 2 (rounded up to 8 bytes)
Run Code Online (Sandbox Code Playgroud)
因此,在64位CLR中,即使是0长度的字符串也需要32个字节.
归档时间: |
|
查看次数: |
500 次 |
最近记录: |