Согласно этому сообщению , причина, по которой вы видите это, состоит в том, что int находятся внутри класса ref, который может перемещаться по куче сборщиком мусора по желанию, адрес int может измениться и тебе не сказали бы.
Чтобы преодолеть это, вы должны сказать ГХ не перемещать объекты, пока вы их используете. Для этого вам нужно использовать
pin_ptr<int*> pinnedFrameWidth = &frameWidth;
затем передайте pinnedFrameWidth в GetImageSize. Pin_ptr будет автоматически приведен к int * при передаче в метод.
Вы должны быть осторожны при использовании pin_ptr. Поскольку GC не может перемещать экземпляр класса Test во время сбора, управляемая куча может стать фрагментированной и, в конечном итоге, производительность может снизиться. В идеале закрепите как можно меньше объектов за минимально возможное время.
В это .Net Rocks show краткое обсуждение указателей выводов.