I believe there is some kind of weird issue that won't allow for struct instances to be dynamically allocated in a proper way via the 'new' keyword. It does actually allocate them and return a valid pointer to operate the instances, but whenever the program is exited I get the following exception:

core.exception.InvalidMemoryOperationError@src/core/exception.d(693): Invalid 
memory operation

Calling 'destroy' on the returned pointer only seems to set it to null, but it definitely doesn't call the destructor, neither does it prevent said exception from being raised. Code to reproduce:

```
import std.conv;
import std.stdio;

struct Foo
{
    int a;

    this(int a)
    {
        this.a = a;
    }

    ~this()
    {
        writeln("a is " ~ to!string(a));
    }
}

void main()
{
    Foo a = Foo(5);
    Foo* b = new Foo(10);
    writeln("Allocation complete");
    destroy(b); //Does nothing
    //Destructor for a is called
}
```

Reply via email to