Почему в с# в стуктурах с static void* ptr указателем этот указтаель не равен нулю при инициализации?

В C# структуры (struct) не могут содержать неуправляемые указатели (void*). Такое использование указателей доступно только в небезопасном контексте, с пометкой модификатором unsafe.

Когда мы инициализируем указатель типа void* (или любой другой указатель) в структуре, его значение по умолчанию будет зависеть от его типа. При инициализации указателя внутри структуры компилятор C# не устанавливает значение указателя в ноль. Получаемое начальное значение зависит от режима компиляции и значений, находящихся в памяти по размещению структуры.

Поэтому, если вы не инициализируете указатель в структуре явным образом, то его значение будет неопределенным, и не будет равным нулю. Это связано с тем, что компилятор C# не выполняет автоматическую инициализацию указателей в структурах.

Тем не менее, при использовании указателя в структуре, важно следить за его правильной инициализацией. Обратите внимание, что небезопасные операции и использование указателей - потенциально опасное и сложное занятие, требующее основательной проверки и тестирования кода. Используйте указатели в C# с осторожностью и только при необходимости, соблюдая все меры предосторожности для обеспечения безопасности и правильного использования указателей.