Eli*_*sky 9 c++ garbage-collection memory-management new-operator
我正在为我的一个项目中的一系列对象开发垃圾收集机制.我想要的是动态分配这些对象,new而不必调用delete.
这可以通过重载operator new来调用为这些对象实现GC的专用分配器对象(当分配了太多内存时触发收集).但是,我遇到了一个问题:用户仍然可以delete对这些对象执行操作,但我不希望这样.
使operator delete私有是因为++处理故障在建设路上的C问题-如果operator new是公开的,operator delete应该是太.这有时也被认为是替代只是使双方operator new和operator delete私有的,只能暴露出工厂创建方法给用户.我可以做到这一点,但它感觉不太干净,需要额外的代码来编写.
编辑:另一种方法是使operator delete空(或抛出异常).然后,要实际释放对象,我的GC将显式调用析构函数,然后使用全局释放内存::operator delete.
还有其他想法吗?
Chr*_*s K -2
boost::shared_ptr<Type> ptr = boost::make_shared<Type>();
Run Code Online (Sandbox Code Playgroud)
你永远不会调用new,你永远不会调用delete。
为什么要重新发明轮子?智能指针确实是正确的选择。