Какой размер имеют ячейки памяти? - 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);
        }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.714 из 5
Похожие ответы