A good case.
"George" <George@discussions.microsoft.com> wrote in message
news:7F0A4ABC-F3B4-486C-B6B6-4D071558D262@microsoft.com...
Hello everyone,
Auto_ptr is convenient because of it saves our work and provides a
framework
to auto-management life cycle to reduce potential resource leak.
But why do we sometimes need to call release method on auto_ptr to go back
to the style of manual management? Remember, when we call release, we need
to
delete the object instance manually later.
(here is a sample I modified from MSDN auto_ptr sample code)
[Code]
// auto_ptr_release.cpp
// compile with: /EHsc
#include <memory>
#include <iostream>
#include <vector>
using namespace std;
class Int
{
public:
Int( int i )
{
x = i;
cout << "Constructing " << ( void* )this << " Value: " << x << endl;
};
~Int( ) {
cout << "Destructing " << ( void* )this << " Value: " << x << endl;
};
int x;
};
int main( )
{
auto_ptr<Int> pi ( new Int( 5 ) );
Int* pi3 = pi.release ();
delete pi3;
}
[/Code]
thanks in advance,
George
The only reason I can think of as to why you would want to do this is if
another object was going to take ownership of the object pointed to by the
auto_ptr. If you just needed a pointer to the object for some reason you
would probably call the "get" method rather than "release".
--
============
Frank Hickman
NobleSoft, Inc.
============
Replace the _nosp@m_ with @ to reply.