On Sunday, 8 May 2016 at 11:16:56 UTC, deadalnix wrote:
Ones that have only pointers are probably OK too. Though I'm
not sure if a precise scanner takes into account the type of
the pointer. I would expect it to use embedded typeinfo in
target block.
-Steve
Because of void* and classes, the GC MUST be able to find out
what type was actually allocated, or at least its pointer
bitmask.
Yep, and it does that by looking at metadata of the pointed
object itself, it doesn't care about the type of pointer to that
object. I mean if we have object x of class X in heap and
pointers "X p1", "void* p2" and "Y p3" all having same value &x
(pointing to the same address) then GC will have no problem in
scanning x as long as it can access x's type info knowing the
address of x in heap. Which means all p1, p2 and p3 might easily
be just at one position in a union and that would not be a
problem.