里奇后退两步,靠在椅背上,双手交叉在胸前。
他不是在刁难,他只是充满好奇。
这个问题不是凭空產生的,而是他真切遇到过的问题。
所以,里奇也在思考。
同样地,他也期待眼前这个年轻人,能给出一个让他感到新奇的解法。
就像他之前做到的那样。
李林深深吸了一口气。
此刻他脑海中有混乱、有震惊,但唯独没有恐惧。
因为他並没有从里奇身上感受到恶意。
这只是一个挑战。
一个他必须接受的挑战。
这就是c语言之父的威能吗,连繫统这种產物都得被他压制。
幸好,李林的知识都装在脑子里。
“呼——”
他没有急著动手,而是先试著理顺思路,说出了自己的思考,
“要真正解决问题,必须依靠系统本身防御错误的能力。毕竟,错误就像现实世界的熵增,一定会发生。所以,逻辑不仅要正確,还要设置防线。”
“那就让分配器自己处理。”
里奇的声音从虚空中传来,他的思路逐渐与李林重合,
“唯一的目標是,不许崩溃。”
李林点点头,似乎是同意了里奇的说法。
他重新抬起手,尝试在方格纸上构筑新的秩序。
这一次,他从逻辑入手,为它加上了一道免疫防线。
他修改了分配器,给每一个內存块的头信息添加了一个状態標记。
分別代表已分配、空閒、已释放。
释放一块內存之前,先检查它的状態。
如果状態已经是“空閒”或“已释放”,说明它已经被释放过了。
这时候不再执行合併操作,而是直接拒绝第二次释放,记录一条错误信息,然后返回。
“状態机?”
里奇的声音再次响起,语气里带著不加掩饰的惊喜。
他知道,他赌对了。
“你给每一个內存块赋予了一个有限状態机,从而把释放变成了一次带有前置条件验证的状態转移。”
李林点了点头,手指却没有停下来。
因为还不够。