Расположение объектов в памяти: странный указатель перед int - C#
Формулировка задачи:
Сразу оговорюсь, что вопрос носит просто ознакомительно - спортивный характер. Итак...
Есть у нас код:
вот если мы остановимся отладчиком сразу после создания класса, нажмем заветные клавиши Ctrl + D + Y, то у нас откроется окно(в которое мы впишем имя объекта), которое укажет нам как располагается в памяти наш объект.
И перед выделенными интами, у нас будет какой-то указатель.
Что это за указатель?
class Abc
{
int a = 1;
int b = 2;
int c = 3;
}
public class MainClass
{
public static void Main()
{
Abc abc = new Abc();
} // <- stop here
}Решение задачи: «Расположение объектов в памяти: странный указатель перед int»
textual
Листинг программы
.load sos
extension X:\Windows\Microsoft.NET\Framework\v4.0.30319\sos.dll loaded
!DumpObj 0x02612464
PDB symbol for clr.dll not loaded
Name: ConsoleApplication14.Program+Abc
MethodTable: 00193834
EEClass: 001912c4
Size: 20(0x14) bytes
File: ...\ConsoleApplication14.exe
Fields:
MT Field Offset Type VT Attr Value Name
71a4c770 4000001 4 System.Int32 1 instance 1 a
71a4c770 4000002 8 System.Int32 1 instance 2 b
71a4c770 4000003 c System.Int32 1 instance 3 c
!DumpMT -MD 0x00193834
EEClass: 001912c4
Module: 00192e94
Name: ConsoleApplication14.Program+Abc
mdToken: 02000003
File: ...\ConsoleApplication14.exe
BaseSize: 0x14
ComponentSize: 0x0
Slots in VTable: 5
Number of IFaces in IFaceMap: 0
--------------------------------------
MethodDesc Table
Entry MethodDe JIT Name
71954960 71656728 PreJIT System.Object.ToString()
71948790 71656730 PreJIT System.Object.Equals(System.Object)
71948360 71656750 PreJIT System.Object.GetHashCode()
719416F0 71656764 PreJIT System.Object.Finalize()
0019C030 00193828 JIT ConsoleApplication14.Program+Abc..ctor()