img img img img

Adam Furmanek

Ręczne zarządzanie pamięcią w .NET

Obiekty referencyjne na stercie, obiekty wartościowe na stosie — to typowa odpowiedź na pytanie o położenie w pamięci alokowanych instancji. Ale co dokładnie na temat struktury pamięci mówi standard .NET? Czy wymaga konkretnego zachowania w tym obszarze, czy może istnieją mechanizmy pozwalające nam przejąć kontrolę nad alokacją? Czy da się przenieść obiekt referencyjny na stos? A jeżeli tak, to co jeszcze można zrobić w języku, w którym tworzeniem i niszczeniem obiektów zajmuje się platforma?
W trakcie prezentacji pokażę, jak ręcznie zaalokować obiekt w dowolnym miejscu i napisać własny operator new. Będzie trochę asemblera, podglądania zrzutów pamięci, słów kluczowych nierozpoznawanych przez ReSharpera, a wszystko to w C# — języku, w którym na pierwszy rzut oka nie da się tego zrobić.


Adam Furmanek

Adam Furmanek, absolwent Informatyki na WIEiT na AGH, obecnie programista .NET w firmie Intive w Krakowie, a także moderator forum Matematyka.pl. Zainteresowany programowaniem systemowym, aplikacjami desktopowymi, rozwiązaniami mobilnymi i systemami rozproszonymi. Zawsze dąży do pełnego zrozumienia wewnętrznych mechanizmów używanych technologii, nie boi się asemblera i generowania kodu maszynowego w locie. W wolnych chwilach prowadzi techniczny blog „Random IT Utensils” pod adresem https://blog.adamfurmanek.pl , gdzie opisuje szczegóły implementacyjne platformy .NET, zastosowania całkowitoliczbowego programowania liniowego (ILP), sposoby konstrukcji kompilatora i historie z debugowania systemów spotykanych w pracy.