Memory errors

PhilE theotherphil at hotmail.com
Sun Mar 16 12:50:53 PDT 2014


Ah, I need to dispose of the image before disposing of the 
display.

On Sunday, 16 March 2014 at 19:33:09 UTC, PhilE wrote:
> When using both simpleimage and DWT my program crashes with 
> "core.exception.InvalidMemoryOperationError" after I show an 
> image in a GUI window and then close the window. I'm presumably 
> misunderstanding something about how the windows deal with 
> memory deallocation, but this happens even when copying 
> tutorial examples.
>
> e.g.
>
> module main;
>
> import org.eclipse.swt.SWT;
> import org.eclipse.swt.widgets.Display;
> import org.eclipse.swt.widgets.Label;
> import org.eclipse.swt.widgets.Shell;
> import org.eclipse.swt.graphics.all;
>
> void main ()
> {
>     auto display = new Display;
>     auto shell = new Shell;
>
>     shell.setText("Title");
>
>     Label label = new Label (shell, SWT.BORDER);
>     label.setBounds(shell.getClientArea());
>
>     Image image = new Image(display, "C:/dev/data/tree.png");
>     label.setImage(image);
>
>     shell.pack();
>     shell.open();
>
>     while (!shell.isDisposed)
>         if (!display.readAndDispatch())
>             display.sleep();
>
>     display.dispose();
> }
>
> This successfully creates the display and shows an image, but 
> when I close the window the memory error exception is thrown. 
> If I run the same code without creating the image then there's 
> no errors. If I create the image without setting it on the 
> label I still get the error. Any ideas?



More information about the Digitalmars-d-learn mailing list