运行valgrind或purify将是下一步,但是在编写代码本身的同时,您如何确保它不会导致任何内存泄漏呢?您可以确保以下几点:- 1:新建的数量等于删除2:打开的文件描述符是否关闭
还有别的事吗?
发布于 2009-08-20 04:07:47
尽可能地使用RAII成语
在适当的地方使用智能指针,例如std::auto_ptr。(不要在任何标准集合中使用auto_prt,因为它不会像您想象的那样工作)
发布于 2009-08-20 04:12:25
尽可能避免动态创建对象。来自Java和其他类似语言的程序员通常编写如下内容:
string * s = new string( "hello world" );
当他们应该写下:
string s = "hello world";
类似地,当它们应该创建值集合时,它们会创建指针集合。例如,如果您有一个如下所示的类:
class Person {
public:
Person( const string & name ) : mName( name ) {}
...
private:
string mName;
};
而不是像这样编写代码:
vector <Person *> vp;
或者甚至是:
vector <shared_ptr <Person> > vp;
取而代之的是:
vector <Person> vp;
您可以很容易地添加到这样的向量中:
vp.push_back( Person( "neil butterworth" ) );
并且为您管理Person和vector的所有内存。当然,如果你需要一个多态类型的集合,你应该使用(智能)指针
发布于 2009-08-20 04:08:17
https://stackoverflow.com/questions/1305713
复制