Well, unless there’s something I’ve been missing, since both of the plug-ins are in the same process they share the same heap, and they both use the static Ptr which they also share in the code space to point to the instance.
You can use a static, but need be a bit smarter about it. When each plugin releases its pointer to the object, it should check whether its ref count has now gone down to 1 (i.e. no other plugin instances are using it, and only the static pointer is keeping it alive). In that case, it should zero the static pointer to make sure the object gets cleared up.