ptrcall
, как и все остальные делегаты начиная с .NET 2.0, является многоадресным делегатом. То есть он хранит свой внутренний список методов, на которые ссылается. MSDN может сказать следующее на MulticastDelegate
:
Представляет делегат многоадресной рассылки; то есть делегат, который может иметь более одного элемента в своем списке вызовов . & quot; (выделение мной добавлено).
Итак, в вашей терминологии ответ, скорее всего, ptrcall
указывает на 2 место в куче.
Но почему эта деталь реализации вообще имеет значение?
P.S .: Вы можете позвонить ptrcall.GetInvocationList()
и посмотреть, что вы получите. Я только рекомендую это вам для того, чтобы играть и лучше узнавать делегатов; не делайте этого в производственном коде, если вы действительно не должны .