[C++]Widgets and Force Garbage Collector

Hi everybody! I’m working with widgets in C++ and I’m testing the garbage collector of the Engine.
My scenario is that I’ve a pointer to a widget instance, at a certain point I need to destroy the widget: for what I’ve experienced, the best way is to detach all pointers to the widget, in such a way to allow the garbage collector to destroy it.
Since a don’t want to waste resources and speed up the deletion of the widget I’m making these calls:

MyWidget->ConditionalBeginDestroy();
MyWidget= nullptr; 
GetWorld()->ForceGarbageCollection(true);

In this way the garbage collector destroys immediatly the old widget. My question is: is safe to use these function methods?? How does “ConditinalBeginDestroy()” exactly work?

Thanks!

thank you so much, so simple, i didn’t even use GetWorld()->ForceGarbageCollection(true);
and it works. I was looking for a solution for over a year, so like you I am afraid
it’s to good to be true. Please tell me if you run in to any problems.

check it out. Rama is the king.

If I were you, I’d let the engine & GC handle cleaning up the widget, not destroying it immediately won’t cause you any problems unless for some reason you’d have to spawn like a 100 widgets each frame, but I hardly think that’s the case here.

Also, for bigger games, ForceGarbageCollection can be really slow - but like, really, really slow. It can run for seconds. Now, keeping a few kilobytes in the RAM for a minute will not affect gameplay at all, while making the game irresponsive for half a second (or even 1-2 frames) will definitely affect the experience negatively. I don’t think you should do it unless you have an extremely specific case.

hei duide! I’m sorry for the delay in the answer, however until now no issue on my side! What about you?