Peter Alexander <peter.alexander...@gmail.com> wrote:

Hi,

I've not been staying up to date on the new/delete discussions and related memory management issues, so I have a few questions.

1. How do I disable the GC?

In a way, you don't. You can, however, replace it with a stub GC.

According to http://dsource.org/projects/druntime/wiki/GettingStarted:

"If you want to change the GC implementation used by the druntime, you
have to change the src/dmd-posix.mak (or src/dmd-win32.mak for Windows),
search for DIR_GC variable and change it from basic to whatever you want,
for example, the stub implementation:

    DIR_GC=gc/stub

Then, rebuild as shown in the previous section.

Right now there are only 2 implementations: stub and basic, so unless you
will be working on your own implementation, there is no much point on
changing this =)"


in /src/druntime/src/gcstub under your dmd installation, there should be
a file gc.d, containing a simple garbage collector. This may or may not
need customization to fit your exact needs.


2. Can I override new?

Yes. However, this is no longer mentioned on
http://digitalmars.com/d/2.0/class.html, so it might be intended not to
be there anymore.

class foo {
    new( uint size ) {
       return malloc( size );
    }
}


3. Is the best (only?) way to do manual memory management to use scoped and emplace in conjunction with malloc and free?

Yes. Add helper functions, allocators and whatever else you may feel
necessary, as you like.


4. Any plans for allocators?

None of which I know. D should easily support building your own, though.
Of course, such a construct would then only be supported by your own
classes.


5. Does Phobos rely on a GC?

Parts of it, certainly.


--
Simen

Reply via email to