如何使用Purify找出Memory Leak及其它錯誤 (with Microsoft Visual C++ 6.0 SP5)

--> 下載範例的workspace

1. 下載及安裝Purify (Do It Yourself)

2. 安裝完畢後,在Visual C++ IDE環境中會多出三個ToolBar,分別為PurifyCoverage Integration、Purify Integration及Purify Quantify Integration。

3. 打開您想要偵錯的workspace (以範例程式說明)。

4. 點選Purify的按鈕,會出現一視窗說明試用期限。按OK關閉。

5. 重新build一次您的workspace (in debug or release)。

6. 按F5執行程式。此時會出現Purify正在運作的視窗。

7. 執行完畢後,Purify會在一視窗中列出本程式的錯誤點。例如此程式有一memory leak。(還有其它錯誤..add oil, fix it :))

之前的說明解釋有問題,只要我們在main function中去free掉在function中所宣告的記憶體空間,便不會產生memory leak。
我想可能VC在function執行完畢後,會檢查return value是否為pointer且是在function內被宣告並且有allocate空間。若是這樣則在function執行完畢後
不會將此變數回收。若是我們在main function中不加free將這些回傳的pointer所指向的memory space回收,則會造成memory leak。
但加入free後,則memory leak消失。我想可能VC在回收變數空間只回收在此function中被宣告且allocate空間的,所以會造成這樣的問題。
但以上僅是我依程式測試的結果所猜測的可能原因。無論如何,我們只要自己手動加入free來釋放memory space而不要去假定compiler會去free掉那些
memory space便不會有問題。
若有任何意見,請告訴我。