core.stdc.stdlib.malloc 和 core.memory.GC.malloc 有什么区别?

What is the difference between core.stdc.stdlib.malloc and core.memory.GC.malloc?

core.stdc.stdlib.malloccore.memory.GC.malloc 有什么区别?当程序在禁用 GC 的情况下运行时,我应该使用哪一个?

core.stdc.stdlib.malloc 是普通 C 的 malloc,所以内存没有注册到 GC。这意味着它不会被扫描,您必须使用 C 的 free 来释放此内存。 core.memory.GC.mallocGC注册,会被扫描。您可以同时使用它们。但是,如果您使用 GC.disable,即使由 core.memory.GC.malloc 分配的内存也不会被释放,直到您重新启用 GC,或者您调用 GC.collect.

顺便说一句。如果你想更好地控制内存分配,你应该看看 https://dlang.org/phobos/std_experimental_allocator.html