当你提供的API需要分配内存时,可以考虑创建一个对象保存新分配内存的地址,然后在对象析构时释放内存。这样用户不用担心忘记释放内存。
需要注意的是,如果用户创建了这种对象并得到新分配的内存地址后,并不立即处理,而是放到一个队列中,这个时候需要特别注意该对象的析构导致过早的释放了内存,使队列中记录的内存地址变成一个无效的地址!
这个时候,其实根据C++Primer,我们已经重载了析构函数,则也应该重载拷贝构造函数和赋值函数。重载这两个函数后就不会发生第2条出现的问题了。
当你提供的API需要分配内存时,可以考虑创建一个对象保存新分配内存的地址,然后在对象析构时释放内存。这样用户不用担心忘记释放内存。
需要注意的是,如果用户创建了这种对象并得到新分配的内存地址后,并不立即处理,而是放到一个队列中,这个时候需要特别注意该对象的析构导致过早的释放了内存,使队列中记录的内存地址变成一个无效的地址!
这个时候,其实根据C++Primer,我们已经重载了析构函数,则也应该重载拷贝构造函数和赋值函数。重载这两个函数后就不会发生第2条出现的问题了。