日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

实现内存检测工具

發布時間:2024/9/30 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 实现内存检测工具 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

思路就是覆蓋原有的malloc和free函數,并記錄內存申請和釋放情況


struct MEM_INFO {int m_addr;int m_size;char m_strFile[1024];int m_nLine; };hash_map<int, MEM_INFO> hstbl;void* xmalloc(unsigned int size, const char* strFile, int nLine) {void* pRet = malloc(size);MEM_INFO info;info.m_addr = (int)pRet;info.m_size = size;strcpy(info.m_strFile, strFile);info.m_nLine = nLine;hstbl[info.m_addr] = info;return pRet; }void xfree(void* p) {hash_map<int, MEM_INFO>::iterator it = hstbl.find((int)p);if(it == hstbl.end()) return;free(p);hstbl.erase(it); }#define malloc(x) xmalloc(x, __FILE__, __LINE__)//調用malloc的文件以及對應的行 #define free(x) xfree(x)void PrintLeak() {hash_map<int, MEM_INFO>::iterator it = hstbl.begin();for (; it != hstbl.end(); it++){cout<<"Memory leak at File: "<<it->second.m_strFile<<" line: "<<it->second.m_nLine<<" address: "<<it->second.m_nLine<<" size: "<<it->second.m_size<<endl;cout<<"******************************************************************"<<endl;} }void test() {void* p = malloc(sizeof(int));void* q = malloc(sizeof(int));free(p);PrintLeak(); }

總結

以上是生活随笔為你收集整理的实现内存检测工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。