对于编写静态类型,复杂语言的编译器中类型的内部表示,我遇到了一些写入内存管理的小问题.考虑C中的一个简单的片段,它很容易地
显示一个引用自身的类型.
class X {
void f(const X&) {}
};
类型可以具有几乎无限复杂的关系.那么,作为一个编译过程,你如何确保它们被正确收集?
到目前为止,我已经决定垃圾收集可能是正确的方式,我不会太高兴,因为我想在C编写编译器,或者只是离开他们,永远不会收集他们的生活的编译阶段(它们有一个非常固定的生命周期),然后再收集它们.这个问题是,如果你有很多复杂的类型,你可能会失去大量的内存.