在VS2013平台下如何快速解决c++代码内存泄漏问题
生活随笔
收集整理的這篇文章主要介紹了
在VS2013平台下如何快速解决c++代码内存泄漏问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在學習FPS3000人臉關鍵點定位算法時,發現github上的源碼,存在大量的內存泄漏問題,在訓練的時發現內存一直在增長,測試的時候也存在內存無法徹底釋放的問題。
一直以為是存放模型參數vector<class>結構的問題,?采用以下方法手動釋放,仍然無法解決問題。
?
經過仔細檢查發現,有好幾個類沒有析構函數,于是就添加了CascadeRegressor::~CascadeRegressor();Regressor::~Regressor();RandomForest::~RandomForest();Node::~Node();由于class類不支持手動釋放,只能在析構函數里自動釋放內存。而且還發現有很多new()和#define Malloc(type,n) (type *)malloc((n)*sizeof(type))手動方式分配的內存沒有手動釋放。
?
那我是怎么發現的呢?方法如下:
一、在VS2013的DeBug模式下在代碼中添加如下代碼:
?
?
二、然后編譯執行程序,如果代碼中存在內存泄漏,則在程序終止時,輸出端口看到如下內容:
?
?
從以上log中可以看到3558059的地方存在內存泄漏,那我們可以把main()函數中的這個函數去掉注釋,
?
?
?
然后重新編譯并執行程序,代碼就會run到內存泄漏的地方就停下來。
此法對于查找內存泄漏非常方便。
總結
以上是生活随笔為你收集整理的在VS2013平台下如何快速解决c++代码内存泄漏问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java 使用 POI 操作 Excel
- 下一篇: vscode gcc debug dbg