c – 复杂语言类型的内存管理

c – 复杂语言类型的内存管理,第1张

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

类型可以具有几乎无限复杂的关系.那么,作为一个编译过程,你如何确保它们被正确收集?

到目前为止,我已经决定垃圾收集可能是正确的方式,我不会太高兴,因为我想在C编写编译器,或者只是离开他们,永远不会收集他们的生活的编译阶段(它们有一个非常固定的生命周期),然后再收集它们.这个问题是,如果你有很多复杂的类型,你可能会失去大量的内存.

解决方法 内存管理很简单,只需要一些表格类型 – >每个声明范围的类型描述符.类型通过名称唯一标识,无论嵌套是多么复杂.即使递归类型仍然只是一种类型.由于tp1正确说明,您通常会执行多次传递来填写所有空格.例如,您可以检查在第一遍中是否知道类型名称,然后计算所有链接,然后计算类型.

请记住,像C这样的语言没有一个非常复杂的类型系统 – 即使它们有指针(允许递归类型),没有太多的类型计算.

总结

以上是内存溢出为你收集整理的c – 复杂语言类型的内存管理全部内容,希望文章能够帮你解决c – 复杂语言类型的内存管理所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1253670.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-07
下一篇 2022-06-07

发表评论

登录后才能评论

评论列表(0条)

保存