C 不用工具,如何檢測記憶體洩漏?

時間 2021-05-11 19:51:55

1樓:王潛公升

find . -type f -name "*.h" -o -name "*.cc" | xargs grep new

然後乙個個看吧,反正寫C++自己new乙個物件的機會並不多。還可以回想下哪個版本開始才有的洩露,結合git diff一行行查。

2樓:秦風猶在

1:過載類的New,delete,裡面統計各個類分配次數和釋放次數,列印對比

缺點就是原生的型別不支援,new Class[100]不支援,不能用make_shareptr。

3樓:

#ifdef DEBUG

// g++ -DDEBUG test.cpp -o test#ifndef MALLOC_FREE_

#include

inline

void

*my_malloc

(unsigned

intnum_bytes

)inline

void

my_free

(void

*ptr

)void

*operator

new(

std::

size_tsz)

void

operator

delete

(void

*ptr

)noexcept

#endif

#define MALLOC_FREE_

inline

void

*my_malloc

(unsigned

intnum_bytes

);inline

void

my_free

(void

*ptr

);void

operator

delete

(void

*ptr

)noexcept

;void

*operator

new(

std::

size_t

sz);

#define malloc(sz) my_malloc(sz)#define free(ptr) my_free(ptr)#endif

這樣可不可以?再統計下輸出

4樓:myd7349

2015-04-27

試試這個:

MemTrack: Tracking Memory Allocations in C++

2015-05-08

HLLib/DebugMemory.h at master · Rupan/HLLib · GitHub

2015-05-14

CZMQ 中定義了乙個巨集 zmalloc:czmq/czmq_prelude.h at master · zeromq/czmq · GitHub,配合 mtrace 來實現記憶體洩漏的檢測。

5樓:「已登出」

然後將類似的方法應用到malloc相關的其他函式上(比如free)

----以上參考自 @陳碩的blog (http://blog.csdn.net/Solstice/article/details/6423342)

6樓:「已登出」

efficios/memleak-finder · GitHub 這個庫比較小可以參考。不過這個沒有hook的不是很全,有些case不能完全搞定。

7樓:Xi Yang

1:你在記憶體分配器前面套一層,記錄所有的分配和釋放,然後就可以在程式退出的時候知道有哪些記憶體沒有釋放。

2:從JUCE學來的,用乙個LeakDetector在你的類裡面標記:在你需要檢查的類裡面放乙個巨集,那個巨集只在Debug編譯下生效,會在你的類裡放乙個額外的LeakDetector成員。

這個LeakDetector物件在構造的時候,會往乙個全域性煉表裡放乙個節點;然後在析構的時候,會撤出那個節點。然後有乙個全域性物件,會在程式退出的時候列印自己還有哪些節點,即是洩漏的物件。

當然,實際上的記憶體檢查器遠遠比這個複雜。比如valgrind,它還會檢查你所有的訪問是否越界,並且可以不匯報那些雖然沒有釋放,但仍然reachable的堆記憶體(這很有可能不是洩漏而是懶得釋放)。

會用工具這一特性,人類祖先是如何傳播到世界各地的?

簡單麥麥 樓主這一問題不難解答。參考大猩猩烏鴉海獺等等動物都會使用簡單工具可以推知 只要大腦進化到一定程度,就地取材的借助工具便是水到渠成的事了。但我覺得這個問題可以提公升歸納為人類起源問題 即是單一源還是多地源。我傾向於後者。單一源未免太理想化和絕對化了 雪夜和子 一些簡單的工具,例如火,石器,木...

c 基於zookeeper的配置工具應如何設計(類似curator的treeCache)?

譚正中 ZooKeeper的讀效能目前一般的機器都能有10 20W吧,讀效能應該不存在問題。看你們配置管理的讀取效能要求了。第乙個問題,你可以根據你自己的業務來,我們自己是使用std unordered map或者std list儲存節點資料的,因為只有一層。第二個問題,對於C 使用ZooKeepe...

月薪六十萬還不用工作你會如何規劃生活?

啊,先旅遊,到處逛。逛滿足後,學各種東西。學花藝啦,學球啦,學各種語言。然後開個婚紗店 我要做兼職化妝師來著 啊,想想就美好。有錢真好 可以做自己喜歡的事,難過 麥子 首先去旅遊,全球,嘗試沒有做過的,玩沒有玩過的,前提都是身心健康的那種哈。然後再工作一段時間,然後再找投資的機會,錢生錢,來得最快。...