Когда статический член получает память

У меня есть класс, который имеет статический член. Насколько я понимаю, все статические члены являются общими для всех экземпляров класса, что означает, что статические члены будут выделять память только один раз. Где выделена эта память (стек или куча) и когда выделена эта память?

EDIT:. Эта память отличается от памяти уровня экземпляра. Как ссылается эта память? Освобождается ли эта память во время компиляции?

Ответ 1

Статические элементы всегда хранятся в глобальной куче, даже элементы ссылочного типа. Однако эта куча не является обычной кучей мусора. Подробнее здесь: http://www.codeproject.com/KB/cs/codeconcepts.aspx

Ответ 2

Распределение памяти для статических членов выполняется только тогда, когда тип используется для времени, будь то объявление переменной или доступ к статическому члену.

Как уже указывалось, выделение памяти для статических элементов выполняется в куче.

Ответ 3

Эта память распределяется по куче. Каждый тип имеет статический конструктор, который выполняет инициализацию типа. Он выполняется до доступа к типу.