Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 删除分配给对象的所有内存_C++_Oop_Memory Leaks - Fatal编程技术网

C++ 删除分配给对象的所有内存

C++ 删除分配给对象的所有内存,c++,oop,memory-leaks,C++,Oop,Memory Leaks,我正在编写一个程序,它创建了一个从别人代码中借用的类的数千个实例。例如,我有一个类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); } } intmain(){ 对于(int

我正在编写一个程序,它创建了一个从别人代码中借用的类的数千个实例。例如,我有一个类
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);
  }
}
intmain(){
对于(int i=0;isome_函数();
删除(b);
}
}
但是class
B
有内存泄漏,在几次迭代后会填满我的RAM。有没有办法在每次迭代我的程序后删除分配给这个类的所有内存


另外,这个类比这个例子要复杂得多,所以我在调试这个类之前考虑过这个选项。

也许类B继承自其他类,而析构函数不是虚拟的。你能检查一下吗

编辑:

要检查泄漏,我建议安装valgrind(软件)

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

如何使用它?只需使用它启动您的程序:valgrind./yourProgram

如何将其用于泄漏检测?valgrind--leak check=yes./yourProgram


是一个指南

可能类B继承自其他类,而析构函数不是虚拟的。你能检查一下吗

编辑:

要检查泄漏,我建议安装valgrind(软件)

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

如何使用它?只需使用它启动您的程序:valgrind./yourProgram

如何将其用于泄漏检测?valgrind--leak check=yes./yourProgram


是一个指南。

不,没有。您必须修复该类。

不,没有。您必须修复该类。

B
不是从任何其他类继承的,而是在该类内部(在属性之间)有抽象类。这有意义吗?是的,我用valgrind查找内存泄漏,但它没有告诉我它在哪里。我会检查这个类中的类。用-g flagYesss编译你的程序,这个类
B
中的一个类继承了,但没有虚拟析构函数。我不知道这一点。类
B
不是从任何其他类继承的,而是在该类内部(在属性之间)有抽象类。这有意义吗?是的,我用valgrind查找内存泄漏,但它没有告诉我它在哪里。我会检查这个类中的类。用-g flagYesss编译你的程序,这个类
B
中的一个类继承了,但没有虚拟析构函数。我不知道这一点。