On Friday, 29 January 2016 at 12:43:53 UTC, Dsby wrote:
the Code:
class MyClass
{
this(){
by = new ubyte[10000];
++i;
}
~this(){
GC.free(by.ptr);
by = null;
writeln("free");
}
void show(){
writeln(i);
};
private:
ubyte[] by;
static i = 0;
};
void main()
{
bool start = true;
int i = 0;
while(start){
auto obj = new MyClass();
obj.show();
Thread.sleep(5.msecs);
//obj.destroy;
//GC.free(cast(void *)obj);
++i;
if (i > 20000)
break;
}
}
the code will be :
341
core.exception.InvalidMemoryOperationError@src/core/exception.d(679): Invalid
memory operation
----------------
core.exception.InvalidMemoryOperationError@src/core/exception.d(679): Invalid
memory operation
----------------
.why is it?
if < obj.destroy; > is exec. the code will not errno.
I am in 2.069, on opensuse leap 42.1 X86_64
dmd -v
DMD64 D Compiler v2.069
Copyright (c) 1999-2015 by Digital Mars written by Walter Bright