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);
}
}
但是classB
有内存泄漏,在几次迭代后会填满我的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
中的一个类继承了,但没有虚拟析构函数。我不知道这一点。