When is an unnamed automatic variable destroyed?

  • Thread starter Steven T. Hatton
  • Start date
S

Steven T. Hatton

In this code, when will (should) Xfromer::release be called?
struct C {
C(const char* c) { f = Xformer::xform(c); }
~C() { Xformer::release(f); }
const F* get() const { return f; }
F* f;
};

void fun(const char* c) {
F* foo = C(c).get();
bar(foo);
baz();
}
 
V

Victor Bazarov

Steven said:
In this code, when will (should) Xfromer::release be called?
struct C {
C(const char* c) { f = Xformer::xform(c); }
~C() { Xformer::release(f); }
const F* get() const { return f; }
F* f;
};

void fun(const char* c) {
F* foo = C(c).get();

The temporary that is used in the expression to initialise 'foo' will be
destroyed at the end of 'foo's initialisation. 'Xformer::release' should
be called as part of the destruction of the temporary, right after 'foo'
is initialised.
bar(foo);
baz();
}

V
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,763
Messages
2,569,562
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top