Согласно ECMA-335:Адрес, где элемент сразу за концом массива будет храниться
II.14.4.2 управляемых указателей
Управляемые указатели (&) может указывать на экземпляр типа значения, поле объекта, поле значения типа, элемент массива или адрес , где элемент, расположенный за концом массива, будет содержать (для указателей указателей в управляемые массивы).
Последняя часть меня интересует. Означает ли это, что ссылка за пределами массива действительна? Как получается такая ссылка (возможно, с ИЛ)? Как CLR обрабатывает чтение и письмо?
Да, ссылка действительна. Разделение указателя - нет. В противном случае очень распространенное поведение, также используемое в C++, например, возвращает функцию end() класса коллекции. GC может справиться с этим, ссылка на объект не указывает на начало объекта, поэтому указатель end() нельзя путать с другим объектом. –
@HansPassant Разве разыменование делает исключение или что-то еще? – IllidanS4
Вызов разыменования указателей не проверяется, шансы на AccessViolationException довольно низки. Не равен нулю. Вы просто получаете мусор. –