垃圾收集可以与显式内存管理共存吗?

Tra*_*ony 8 language-agnostic theory computer-science garbage-collection

例如,假设一个是在C#4中包含一个'delete'关键字.由于基于参考的系统,是否可以保证你永远不会有野性指针,但仍然可以依赖垃圾收集器?

我可以看到它可能发生的唯一方法是,如果不是对内存位置的引用,那么引用将是指向实际对象的指针表的索引.但是,我确信会有一些情况会破坏,并且有可能打破类型安全/悬挂指针.

编辑:我不是在谈论.net.我只是以C#为例.

Too*_*the 2

通过垃圾回收,只要您有对象的引用,它就会保持活动状态。对于手动删除,您无法保证这一点。

示例(伪代码):

obj1 = new instance;
obj2 = obj1;

// 

delete obj2;
// obj1 now references the twilightzone.
Run Code Online (Sandbox Code Playgroud)

简而言之,将手动内存管理与垃圾收集相结合就违背了 GC 的目的。再说了,何苦呢?如果您确实想要控制,请使用 C++ 而不是 C#。;-)。