pointers to fields within a struct or a value within an array
keep the entire object in the live set.
if the GC knows a pointer is an interior pointer,
it need to find the beginning of that object that the interior pointer is pointing to.
if a pointer is pointing to the middle of an object, how does go's GC find the beginning of that object?
https://msdn.microsoft.com/en-us/library/aa712853(v=vs.71).aspx
Interior pointers require special handling by the garbage collector and therefore
require more processing than pointers that point to "whole" objects.
https://www.codeproject.com/Articles/17 … ng-pointer
An interior pointer is a pointer to a managed object or a member of a managed object
that is updated automatically to accommodate for garbage-collection cycles that may result in the pointed-to object being relocated on the CLR heap.
You may wonder how that's different from a managed handle or a tracking reference;
the difference is that the interior pointer exhibits pointer semantics, and you can perform pointer operations such as pointer arithmetic on it.
the only pointer conversion that is illegal is that from an interior pointer to a native pointer
https://www.codeproject.com/Articles/89 … s-in-C-CLI
You cannot have an interior pointer as a member of a class
The compiler will emit a modopt to distinguish interior pointers from tracking references.
System.Runtime.CompilerServices.IsExplicitlyDereferenced (found in mscorlib.dll)
http://blogs.msdn.com/b/ericlippert/arc … esses.aspx
http://www.informit.com/articles/articl … p;seqNum=2