内存使用验证与奇偶游戏求解实践
内存使用验证:借助Hip/Sleek实现
在内存使用验证方面,采用了一种摊销分析方法,会根据每个数据的大小和布局为其分配一个势。在类型推断过程中,堆内存使用量由线性规划求解器(LP - solver)根据函数输入来计算。
与以往构建内存使用验证系统的工作不同,这里复用了基于分离逻辑的通用验证系统Hip/Sleek进行内存使用验证。通过分离逻辑的规范,可以轻松获取形状、大小和别名信息。利用该工具,能够验证许多先前方法无法处理的程序,如双向链表、循环链表和二叉树等。
具体操作步骤如下:
1. 给定一个需要根据内存使用规范进行验证的程序,不构建和实现验证规则来进行验证,而是将程序重写为内存感知版本。在内存感知版本中,通过对特殊变量 heap 和 stk 的显式操作来模拟内存使用行为。
2. 将得到的内存感知程序传递给Hip/Sleek进行自动验证。由于内存感知程序与原程序在观测上等效,原程序的内存安全性可直接从插桩程序的内存安全证明得出。
3. 实现重写过程并将其与Hip/Sleek集成。
以下是一个简单的流程说明:
graph TD;
A[原程序] --> B[重写为内存感知程序];
B --> C[传递给Hip/Sleek];
C --> D[自动验证];
D --> E[得出内存安全结论];
奇偶游戏求解实践
奇偶游戏是一种具有完全信息和无限
超级会员免费看
订阅专栏 解锁全文
16

被折叠的 条评论
为什么被折叠?



