C语言传统垃圾收集器的缺陷以及我的思路

传统的比如Boehm回收器,都是在malloc/realloc/free上做文章,参考这篇文章【How the Boehm Garbage Collector Works】的解释,因为C数据结构是无法预料的,内存里面并没有特殊标记,很难判断哪些是指针哪些是数据,比如BoehmGC就只能尽最大能力判断。而高级语言都是自己定义一套完整数据结构,禁止用户直接操作内存,指针和数据都精确记录,就能在理论上确保,但是对C语言来讲似乎又显得太笨重。而C++/Rust那些套路,我从来都感觉太丑陋,因为本来低级语言生态位就是完全暴露底层数据/内存结构,生搬硬造那么多概念干嘛?弄到底层完全不透明,一地鸡毛,还不如用高级语言。

所以我的想法就是找到最佳折中【一个极简鲁棒的C语言的动态数据类型扩展,取代诸如C++/Rust那些愚蠢的东西】,沿用最精确的套路,在指针上做文章,十几年的经验,Json那几个类型足够用,标记/清除算法的根指针就是C语言里创建在栈上的变量,记录它们的状态,就可以之后正确判断是否失效,叶子指针是在堆上创建的,因为数据结构固定,就能轻松递归处理。而且它本质依旧是C代码,底层结构完全暴露,也和C一样性能,因为设计简单,优化和扩展也很轻松。

相关推荐
脱氧核糖核酸__20 分钟前
LeetCode热题100——41.缺失的第一个正数(题解+答案+要点)
数据结构·c++·算法·leetcode·哈希算法
脱氧核糖核酸__20 分钟前
LeetCode热题100——73.矩阵置零(题目+题解+答案)
c++·算法·leetcode·矩阵
weixin_4460235621 分钟前
C语言printf函数format参数输出格式及type、flags规定详解
c语言·详解·printf函数·格式参数·输出格式
智者知已应修善业28 分钟前
【51单片机数码管+蜂鸣器的使用】2023-6-14
c++·经验分享·笔记·算法·51单片机
艾莉丝努力练剑31 分钟前
【Linux线程】Linux系统多线程(七):<线程同步与互斥>线程同步(下)
java·linux·运维·服务器·c++·学习·操作系统
c++逐梦人39 分钟前
C++ RAII流式日志库实现
开发语言·c++
t***54439 分钟前
还有哪些设计模式适合现代C++
开发语言·c++·设计模式
Wave84540 分钟前
C++ 面向对象基础:类、访问权限,构造函数,析构函数
开发语言·c++
t***54441 分钟前
如何在现代C++项目中有效应用这些设计模式
开发语言·c++·设计模式
kyle~43 分钟前
导航---LIO(激光雷达-惯性里程计)算法
c++·算法·机器人·ros2·导航