跳转至

rScan() 函数

rScan() 函数读取 0 到 maxAdd 之间每个 4 字节对齐偏移量②处的内存,如果某个结果等于 target 就返回③。如果 rScan()在第一个循环中没有返回,且递归深度不太深④,它就会递增深度并递归扫描每个偏移量⑤,将递归结果保存在 ret 中。

如果一次递归调用返回了部分指针路径⑥,rScan() 会把当前偏移量前置到路径中,并沿着递归链向上返回,直到到达 pointerScan()。当来自 pointerScan() 的 rScan() 调用返回一条指针路径时,pointerScan() 会把当前地址前置到路径前面,并把它作为完整链返回。