从D中的析构函数调用模块级函数(似乎抛出OutOfMemoryError)

Mar*_*ine 6 d

我有一个全局D模块,它包含一些辅助函数(即用于日志记录),它们在模块级而不是在类中.但是,当从析构函数调用这些函数时,我得到一个core.exception.OutOfMemoryError和/或应用程序挂起并崩溃.我在这里做错了吗?

精简测试用例:

logger.d

module main.logger;
void log(const(char)[] msg) {
    auto time = // GET TIME OF DAY SOMEHOW
    std.stdio.writeln(std.conv.to!string(time) ~ " " ~ msg);
}
Run Code Online (Sandbox Code Playgroud)

class.d

module main.class;
import main.logger;

class A {
    public:
        this() {}
        ~this() { log("Destructor"); }
}
Run Code Online (Sandbox Code Playgroud)

Vla*_*eev 4

垃圾收集器当前不支持抛出异常或从终结器内调用内存分配。因此,您无法可靠地执行任何导致分配或从类析构函数内部引发未捕获异常的操作。