Я пытался выяснить издержки строки в .NET 4 x64.Это то, что я получил до сих пор.
- 16-байтовый заголовок объекта для x64
- 4 байта для поля stringLength (arrayLength отсутствует в .NET 4)
- (длина + 1) * 2 байта для содержимого строки (UTF-16, завершено нулем)
Таким образом, можно ожидать, что строка из 1 символа будет 16 + 4 + 4 = 24 байта .Он делится на 8, поэтому не нуждается в заполнении.
Но когда я смотрю на размеры в WinDbg, я вижу, что они занимают 32 байта .Когда я !dumpobject
говорю им, они говорят, что их размер составляет 28 байт, что, как я полагаю, округляется до 32. Что происходит?Есть ли еще один раунд выравнивания памяти?