我決定在我的類中重載新的[],...操作符,這樣我就可以記錄它們被調用的文件和行,以便更輕鬆地跟蹤內存分配/泄漏。重載新的操作員問題
現在的問題是在我的堆棧和數組類(和其他模板容器類,其中分配內存):
如果我和我的一個類具有使用這些新的,新的[],...運算符超載它工作正常。因爲沒有重載的新操作符匹配新的參數(__ LINE __,__ FILE __),所以我不能分配它們,所以我不能分配它們。 )運營商(或其他類似新的投放)。堆代碼
例子:
// placement new
T* t=new(__ LINE __ , __ FILE__)(&m_data[i])T;
所以我出如何使這項工作很好的想法。如果我用新的鬆散內存記錄功能替換新的(__ LINE __,__ FILE __)。 一種解決方案是爲標準數據類型製作一個單獨的堆棧,其中使用默認的新數據類型。
有什麼辦法可以在編譯時檢測模板參數是結構體,類還是內建的C++類型?
你如何處理這樣的東西? 你有什麼建議? 對此設計的任何評論(好的,壞的)顯然是受歡迎的(只是不要發佈像「不要用自己的容器重新發明輪子」之類的東西)。
你有沒有超載' operator new(__ LINE__,__FILE __)',並試圖與'int','float'等一起使用? – iammilind
一個選擇是替換全局的'operator new()'和朋友。 – sharptooth
如果你正在調試內存泄漏,我不明白你爲什麼要做一些已經存在的工作:Valgrind? – Nim