我插裝我用的BoundsChecker源內存檢測,但是當我用儀器 原生的C/C++儀表經理的錯誤檢測類型構建它,我得到 生成錯誤內存泄漏。當我看到輸出窗口顯示NM2002:在儀表期間使用的內聯擴展(/ Ob)這個錯誤..檢測使用的BoundsChecker
但是當我選擇儀表類型作爲性能或覆蓋率分析源構建成功,但是當我運行測試用例檢查內存泄漏它沒有顯示任何內存泄漏.. 任何人都可以幫助我在這... 也請建議我哪種類型的儀器應該用來檢測內存泄漏..
我插裝我用的BoundsChecker源內存檢測,但是當我用儀器 原生的C/C++儀表經理的錯誤檢測類型構建它,我得到 生成錯誤內存泄漏。當我看到輸出窗口顯示NM2002:在儀表期間使用的內聯擴展(/ Ob)這個錯誤..檢測使用的BoundsChecker
但是當我選擇儀表類型作爲性能或覆蓋率分析源構建成功,但是當我運行測試用例檢查內存泄漏它沒有顯示任何內存泄漏.. 任何人都可以幫助我在這... 也請建議我哪種類型的儀器應該用來檢測內存泄漏..
關於檢測內存泄漏,您需要激活「Memory Tracking」子系統。它在默認情況下被激活。但是,它不會跟蹤託管C/C++分配的內存,只能通過非託管方式進行分配。
你介意分享你的測試用例嗎?我是維護產品的開發人員之一,如有必要,我們可以安排NDA協議。
/Obn內聯確實會導致檢測代碼的錯誤,因爲我們在編譯過程之間測試代碼。代碼首先被編譯並且一些代碼可能被標記爲可能的內聯。然後,我們將所有儀器添加到中間語言中。然後進行編譯的最後一遍,如果他們試圖用代碼插入代碼,可能會發生不良事情。這就是爲什麼我們禁用內聯如果可能,並在需要時產生錯誤。
您正在使用哪個VS版本? 哪個版本的Devpartner?
您將需要編譯錯誤檢測來捕獲內存泄漏。我會建議Debug內建編譯以及內聯關閉。
編輯我只是跑了VS2008和VS2010和當前的11.1發佈候選幾個測試
我沒有得到一個錯誤,而是
1>儀表是加入(/ OB0),關閉內聯 1> cl:命令行警告D9025:用'/ Ob0'覆蓋'/ Ob1'
警告1警告D9025:用'/ Ob0'覆蓋'/ Ob1'e:\ cust \ Anthony \ Test \ Test \ cl測試 警告2警告D9025:用'/ Ob0'覆蓋'/ Ob1':\ cust \ Anthony \ Test \ Test \ cl測試
這些消息告訴我們禁用內聯。如果您將警告視爲啓用了錯誤,那麼只會將其視爲錯誤。