Bir sınıfta değil, modül düzeyinde olan bazı yardımcı işlevleri (günlüğe kaydetme için) içeren genel bir D modülüne sahibim. Ancak, bu işlevleri bir yıkıcıdan çağırırken, bir core.exception.OutOfMemoryError alıyorum ve/veya uygulama kilitleniyor ve çöküyor. Burada yanlış bir şey mi yapıyorum?D'deki destructor'dan modül seviyesi işlevlerini çağırma (bir OutOfMemoryError atmış gibi görünüyor)
bir soyulmuş test durumda:
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);
}
class.d
çöp toplayıcısı, şu anda içinden adı atılan istisnalar veya bellek ayırmalarını desteklemezmodule main.class;
import main.logger;
class A {
public:
this() {}
~this() { log("Destructor"); }
}
Evet; Hatayı yeniden oluşturmak için en az bir test çantası sağlamadan belirsiz bir soru gönderiyorsunuz. Alınma yok. – FeepingCreature
Şu anda küçük bir test vakası alabilirim. –