On Wednesday, 26 February 2014 at 09:14:42 UTC, Bienlein wrote:
Hello,
ich found this article on the Internet that explains how to do
malloc and free in D:
http://fgda.pl/post/8/a-look-at-the-d-programming-language See
the functions named _new and _delete. My question is whether
this is really the way to allocate and free some memory for a
class manually in D. Because I just did this playing around
with D and it seems to work:
class D {
public int i;
}
void main(string[] args)
{
auto d = new D();
delete(d);
d.i = 123; // creates Access Violation as expected
}
The article confused me. Is the contents outdated or am I
messing something up?
Thanks for shedding any light on this for me ;-).
Regards, Bienlein
You need to clarify if you want to allocate on the managed heap
(managed by the garbage collector) or the unmanaged heap (managed
by you with malloc and free)
The _new and _delete methods in the article use an outdated
syntax as class allocators[1] (read "new") and deallocators[2]
(read "delete") are scheduled for deprecation.
There is also an article[3] here on dlang.org that also shows and
example of this, but it also uses the old syntax.
Coincidently, I just posted some code[4] on the digitalmars.D
list asking for some help updating that very example. I intend
to submit a pull request to update it in the next day or two.
Mike
[1] http://dlang.org/class.html#deallocators
[2] http://dlang.org/class.html#allocators
[3] http://dlang.org/memory.html#newdelete
[4]
http://forum.dlang.org/post/zxswyzstaepsatiyj...@forum.dlang.org