我正在研究我的一个学习项目(用 C 语言),并考虑将其迁移到 C++ 以获得额外的学习点。其中一部分涉及针对特定对象系列的垃圾收集系统,在 C 中,我通常会使用大型 malloc/mmap 实现并使用简单的标记和清除(我可以识别引用和类似的东西)已经)。
我的问题是我正在考虑将这个想法转移到 C++ 中,但对我对其内存管理方案的理解感到不够安全。
到目前为止,我考虑分配一个大内存池并在基类上重载运算符 new 和 delete 以调用我的内存池的抓取/释放函数,然后让垃圾收集器的扫描阶段删除它看到的对象。够了吗?我在这里没有看到的隐藏陷阱是什么?
编辑:澄清一下,我已经能够弄清楚分配对象的寿命,所以不需要使用 gc abi。这些对象很少被 c++ 代码操作,使用它们的代码能够通知 gc 他们正在被使用,而无需检查堆栈。