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

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

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

相关推荐
Rabitebla3 分钟前
C++11 新特性详解(一):列表初始化、initializer_list 与右值引用
java·开发语言·数据结构·c++·算法·leetcode·list
MC皮蛋侠客1 小时前
TDengine C++ 系列(11):性能模型与调优——从测量到优化
c++·php·tdengine
YSL0701241 小时前
字符函数和字符串函数
c语言
兔兔兔兔11 小时前
记录C++ 3
开发语言·c++
代码地平线2 小时前
C++类与对象(中):默认成员函数与日期类实战
c++·笔记·算法
hansang_IR2 小时前
【题解】可持久化区间仿射区间和(Persistent Range Affine Range Sum)
c++·算法·线段树
瑞码空间2 小时前
01背包:动态规划的Hello World
c++·算法·0/1背包问题
特立独行的猫a2 小时前
我用 Rust + Tauri 2 复刻了 N_m3u8DL-CLI:一个 m3u8 多线程下载器
开发语言·后端·rust·m3u8·视频下载器·m3u8dl-cli
对象存储与RustFS2 小时前
大文件传到 48 GiB 就断:S3 分片上传的参数怎么算,以及那些没人清的残片
后端·rust·开源
鱼子星_2 小时前
【C++】反向迭代器:反向迭代器的底层认识与模拟实现
开发语言·c++·笔记·stl