If I have a factory, that creates an object and returns a pointer to it, what will be a better way to delete it:
By delete
call in the \"user\" code, or by
In the general case, the factory might not use plain old new
to allocate the object. It may use object and/or page pooling, malloc
with placement new
, or something even more exotic (memory mapping?). There are at least three ways to handle this that I can think of:
recycle
method to be called when you are done with the object.delete
operator in the object itself.I hesitate to recommend one over the other, since I haven't given it enough thought in the last five minutes to proffer a definitive opinion, but I would tend to favour the last option in combination with a regular smart pointer like boost/tr1::shared_ptr.