how to create an array of scoped objects ?

Mike Parker aldacron at gmail.com
Tue Jul 3 10:00:00 UTC 2018


On Tuesday, 3 July 2018 at 07:29:12 UTC, Flaze07 wrote:

>
> class RenderWindow {
>     private sfRenderWindow* _window;
>     public {
>          this() {
>             _window = sfRenderWindow_create(/*parameters*/);
>          }
>          //couple of other functions
>          ~this() {
>              sfRenderWindow_destroy( window );
>          }
>     }
> }
> //not a very accurate representation, but should get the 
> message pretty clear
>
> which I am very concerned about leaking resources, the tutorial 
> did just not use scoped!, instead it directly use new, but what 
> about leaking resources ?

The only way you're going to be leaking resources is if the app 
is long running and the resource objects are never collected. I'd 
be more concerned about the nondeterministic nature of the 
destructor calls, particularly what happens at app shut down if 
the render window destructor is called before any thing that 
depends on the graphics context. If the library doesn't account 
for that, you'll get random crashes when the app exits.

If you need to release resources while the app is running, just 
use resource.destroy(). This will make sure the destructor is 
called and the object is reset to its init state, and you can 
maintain determinism.


More information about the Digitalmars-d-learn mailing list