Хочется странного программировать на C# как на C, т.е. распределить кусок памяти, припинить его и насоздавать там внутри структур независимо от сборщика мусора.
"The fixed keyword must be in an method labelled unsafe, which in turn requires the /unsafe compiler flag."
"GCHandle.Alloc(…) discreetly circumvents this safeguard, thereby raising fewer eyebrows in a code review."
GCHandle gCBuffer = GCHandle.Alloc(Buffer, GCHandleType.Pinned);
"It does require full trust, though, which is equivalent to unsafe code."
Зачем (может быть) нужно создавать структуры в буфере?
1) чтобы иметь возможность освободить все объекты разом, освободив всю область, без всяких там сборок мусора
2) чтобы весь этот буфер зашарить с другим процессом через memory mapping
Во втором случае структуры могут быть сложными и reference counting или какое другое ручное управление может пригодится.