Difference AutoFree::Set and Assign
-
On 22/06/2018 at 10:01, xxxxxxxx wrote:
User Information:
Cinema 4D Version: R19
Platform:
Language(s) : C++ ;---------
Hi,In the past I have only had to use the constructor of an AutoFree. Thus passing the object in the AutoFree constructor.
Now, I need to assign an object and was wondering what the difference would be betweenAutoFree::Set
AutoFree::AssignThe documentation mentions the same for both.
Does both free an already assigned object when assigning/setting a new object, or should I first free the existing object (after a Release()) and then perform an Assign/Set? -
On 25/06/2018 at 10:12, xxxxxxxx wrote:
Hi Daniels,
In fact, Set And Assign are internally the same functions. But we have both for some historical reason.
So is up to use whatever you want.AutoFree is a smart pointer, based on scope. So they do not free the "old" pointer when the pointer is defined by Set/Assign. So you have to do it yourself by calling Release + Free of the returned pointer.
Cheers,
Maxime -
On 25/06/2018 at 11:31, xxxxxxxx wrote:
Thanks Maxime,
I had wished this information to be part of the documentation. As it really wasn't clear what the class does with the "old" pointer.Am I correct to assume that AutoAlloc, AutoNew, AutoPtr all work the same? You need to release and free the old pointed object before assigning a new one
These will only automatically delete the pointed object when going out of scope. -
On 26/06/2018 at 02:45, xxxxxxxx wrote:
Thanks for your feedback, it will be added to the documentation.
And yes your assumption is right.