簡體   English   中英

刪除分配給對象的所有內存

[英]Delete all the memory allocated to an object

我正在編寫一個程序,該程序創建從其他人的代碼中借來的數千個類的實例。 例如我有B類,

class B {
  B(int a);
  int some_function();
  ...
};

在我的程序中,我創建了此類的對象:

int main() {
  for(int i=0; i<10000; i++) {
    B *b = new B(i);
    b->some_function();
    delete(b);
  }
}

但是B類存在內存泄漏,並在幾次迭代后填充了我的RAM。 程序每次迭代后,是否有任何方法可以刪除分配給此類的所有內存?

PS該類比此示例復雜得多,因此在調試該類之前,我已經考慮了此選項。

不,沒有。 您必須修復該類。

也許B類是從其他類繼承而來的,析構函數不是虛擬的。 你可以看看嗎?

編輯:

要檢查泄漏,我建議安裝valgrind (軟件)。

如何安裝? 在ubuntu中, sudo apt-get install valgrind

如何使用? 只需使用它啟動程序: valgrind ./yourProgram

如何將其用於泄漏檢測? valgrind --leak-check =是./yourProgram

是一個指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM