Содержится в адресном пространстве кучи, принадлежащем самому объекту foo (так же, как выложен foo.IntProperty)?
Это правильно.
Мантра «Структуры размещаются в стеке, классы размещаются в куче», здесь вводит в заблуждение - структуры, которые являются частью других объектов (других классов или структур), хранятся в памяти, используемой для этих объектов. int
ничем не отличается от любого другого типа структуры в этом отношении.