跟踪句柄类似于本地C++指针,但也有明显不同的地方。跟踪句柄确实存储着某个地址,如果堆压缩过程中移动了句柄引用的对象,垃圾回收器将自动更新句柄包含的地址。但是,我们不能像使用本地指针那样使用跟踪句柄执行地址的算术操作,跟踪句柄的强制类型转换也是不允许的。与标准C++可以自己维护堆不同,因为C++/CLI中动态分配的内存是由CLR来维护的,当不需要堆时,CLR自动将其删除并回收,同时自动压缩内存堆以免产生不必要的内存碎片。由于这种垃圾回收机制会改变堆中对象的地址,如果使用指针,则指针将不再有效,因此不能在CLR堆中使用普通C++指针。为此,CLR提供了跟踪句柄和跟踪引用,从而安全地访问堆中对象。