Tra*_*ony 8 language-agnostic theory computer-science garbage-collection
例如,假设一个是在C#4中包含一个'delete'关键字.由于基于参考的系统,是否可以保证你永远不会有野性指针,但仍然可以依赖垃圾收集器?
我可以看到它可能发生的唯一方法是,如果不是对内存位置的引用,那么引用将是指向实际对象的指针表的索引.但是,我确信会有一些情况会破坏,并且有可能打破类型安全/悬挂指针.
编辑:我不是在谈论.net.我只是以C#为例.
通过垃圾回收,只要您有对象的引用,它就会保持活动状态。对于手动删除,您无法保证这一点。
示例(伪代码):
obj1 = new instance;
obj2 = obj1;
//
delete obj2;
// obj1 now references the twilightzone.
Run Code Online (Sandbox Code Playgroud)
简而言之,将手动内存管理与垃圾收集相结合就违背了 GC 的目的。再说了,何苦呢?如果您确实想要控制,请使用 C++ 而不是 C#。;-)。