On 20.09.2019 21:59, Jiří Činčura wrote:
Hi *,
I'm bit lost in the logic of`addRef` and `release`. So better to ask, than
cause some leaks, right?
Let's suppose I call `IExternalContext::getAttachment` in a method and assign
it to local variable. Do I have to call `addRef` after getting the instance? Do
I have to explicitly call `release` before end of the method?
Let's suppose I call `IExternalContext::getAttachment` in a constructor and
assign it to the field of the class. Do I have to call `addRef` in that
constructor? Do I have to call `release` later in destructor?
Two mentioned cases have absolutely no difference therefore single answer.
Before returning some ref-counted object from a function it's reference
count is increased - therefore no need to call addRef() for an object
returned by some function. When a pointer is going away (no matter due
to end of life of stack frame or when class instance is destroyed)
release() should be called.
If it's possible to have RAII holder for an object (a kind of reference
pointer) - it would be very good programming practice on my mind.
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel