我正在尝试使用C / C ++(最好是C)来枚举整个Windows注册表,我使用递归来做这个但是我一直在运行堆栈溢出,我理解但是我无法想到反正这样做没有妄想。 关于如何在没有递归的情况下执行此操作的建议将是很好的,thx。
答案 0 :(得分:2)
只要你的递归只是每个子级别的一次,我不明白为什么这应该溢出堆栈。当然Windows注册表是一场噩梦,但我不认为它的密钥层次结构是数千级。
我怀疑你在堆栈上使用了一些巨大的数组,这一般是个坏主意但尤其是递归。尝试使用malloc
来分配您需要的任何大数据。
答案 1 :(得分:0)
面包优先搜索显然是可能的。基本思想是使用一个地方队列进行搜索。首先将root放入队列,然后重复以下步骤,直到队列为空:
...其中“links”是文件系统的“子目录”,注册表的“子键”等。