Какой размер имеют ячейки памяти? - C#
Формулировка задачи:
Просто стало интересно, сколько памяти занимают различные типы. Но запуталась окончательно. В комментариях отображены адреса ячеек, младшие два разряда. Например, char - это 2-байтный тип, а занимает в памяти 8 единиц. А как понимаю, здесь единица - это 1 байт. а тип decimal итого 20 байт занял, хотя должен 16. У меня 64-х битная система. Ячейка памяти в связи с этим должна быть равна 8 байт. Но почему так объекты по странному размещаются в памяти? Перечитала уже кучу статей и еще больше запуталась.
unsafe { int i = 5; int* p1 = &i; Console.WriteLine(i); Console.WriteLine((int)p1);//......56 ulong s = 10; ulong* p2 = &s; Console.WriteLine(s); Console.WriteLine((int)p2);//......44 char q = 's'; char* p3 = &q; Console.WriteLine(q); Console.WriteLine((int)p3);//......36 decimal r = 2; decimal* p4 = &r; Console.WriteLine(r); Console.WriteLine((int)p4);//......16 Console.ReadLine(); }
Решение задачи: «Какой размер имеют ячейки памяти?»
textual
Листинг программы
[StructLayout(LayoutKind.Sequential, Pack = 1)] struct TypeSize { public int a; public ulong b; public char c; public decimal d; public byte max_value; } unsafe static void Main(string[] args) { var ts = new TypeSize(); Console.WriteLine("size of 'a': {0}", (ulong)&ts.b - (ulong)&ts.a); Console.WriteLine("size of 'b': {0}", (ulong)&ts.c - (ulong)&ts.b); Console.WriteLine("size of 'c': {0}", (ulong)&ts.d - (ulong)&ts.c); Console.WriteLine("size of 'd': {0}", (ulong)&ts.max_value - (ulong)&ts.d); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д