Chaos und Verwirrung. Meine Welt ist normalerweise so klein, dass sich sowohl Entwicklung als auch Auslieferung auf Windows 7 vollzieht.
Ausnahmsweise musste nun etwas noch auf Windows XP laufen. Und ich muss schockiert feststellen:
Der Klassendestruktor wird nicht ausgeführt.
Gegeben sei
Delphi-Quellcode:
TMySingleton = class
class destructor Destroy();
class constructor Create();
end;
und
Delphi-Quellcode:
class constructor TMySingleton.Create();
begin
ShowMessage('
Das ist der Klassenkonstruktor');
end;
class destructor TMySingleton.Destroy();
begin
ShowMessage('
Das ist der Klassendestruktor');
end;
initialization
Winapi.Windows.MessageBox(0, '
initialization', '
', 0);
finalization
Winapi.Windows.MessageBox(0, '
finalization', '
', 0);
Auf Windows 7 wird alles wie erwartet ausgeführt:
- Das ist der Klassenkonstruktor
- initialization
- (...)
- finalization
- Das ist der Klassendestruktor
Auf Windows XP:
- Das ist der Klassenkonstruktor
- initialization
- (...)
- finalization
Warum ist das so? Das kann doch nicht gewollt sein? Wie verhält sich das auf iOS, Android und Mac?