2010-10-06 119 views
0

我想使用C/C++(最好是C)來枚舉整個Windows註冊表,我使用遞歸來做到這一點,但我一直運行到堆棧溢出,我明白,但即時通訊無法想象做這個沒有recusion。 如何做到這一點沒有遞歸的建議將是偉大的,thx。註冊表搜索

+2

你究竟試過了什麼[你的代碼在哪裏]? – jacknad 2010-10-06 15:18:45

回答

2

只要你的遞歸只是每一次的子級,我不明白爲什麼這應該溢出堆棧。當然,Windows註冊表是一場噩夢,但我不認爲它的密鑰層次結構深入數千層。

我懷疑你在棧上使用了一些巨大的數組,這通常是一個壞主意,但特別是遞歸。嘗試使用malloc來代替所需的任何大數據。

+0

+1。我自己用遞歸做了這個,沒有問題。 – casablanca 2010-10-06 15:39:32

0

麪包優先搜索將是一個明顯的可能性。基本的想法是使用一排地方進行搜索。首先將根放入隊列,然後重複以下步驟,直到隊列爲空:

  1. 從隊列中獲取項目。
  2. 枚舉其內容。
  3. 將其包含的任何鏈接添加到隊列中。

...其中「三通」將是「子目錄」爲文件系統,「子項」爲註冊表等

+0

這聽起來像它會工作,你有任何指向我可以使用的教程或示例代碼的鏈接?因爲我不知道你在說什麼:) – Josh 2010-10-06 16:06:40

+0

反正我不能想到任何權利。抱歉。 – 2010-10-06 16:51:08