Qt: bloß keine Waisenkinder instantiieren

Wenn man in Qt eine Klasse implementiert, sollte man tunlichst darauf achten, dass alle instantiierten Attribute this als parent haben. Andernfalls kann es nämlich sein, dass irgendwann der Garbage-Kollektor auf das offenbar elternlose Kind-Objekt stößt und es im Sinne von "ist das Kunst oder kann das weg" in die Tonne wirft. Und dann hat man den Salat. Ist mir hiermit passiert:
  1. class Measurement : public Object
  2. {
  3. Q_OBJECT
  4. public:
  5.   Measurement(QObject* parent = 0);
  6.   ~Measurement();
  7. };
  8. class XYPlot : public QQuickPaintedItem
  9. {
  10. Q_OBJECT
  11. public:
  12.   XYPlot(QQuickPaintedItem* parent = 0);
  13. private:
  14.   Measurement m_Measurement;
  15. };
Das Elternelement hier ist XYPlot, welches ein Attribut der Klasse Measurement besitzt. Bei mir gab es unreproduzierbare SIGSEGV segmentation faults, was immer auf irgendein Problem mit ungültigem Pointer hinweist. Beim Debuggen habe ich dann festgestellt, dass kurz zuvor der Dekonstruktor von Measurement aufgerufen wurde - obwohl das zugehörige XYPlot-Objekt noch existierte. Woran lag es? ⇒ Ich hatte vergessen, dem Kind-Objekt zu sagen wer sein parent ist. Im Konstruktor der Elternklasse XYPlot also m_Measurement mit this instantiieren:
  1. XYPlot::XYPlot( QQuickPaintedItem* parent) : QQuickPaintedItem(parent), m_Measurement(this)
  2. {
  3. }
Also besser gut aufpassen bei so was, sonst kann das Debugging richtig ätzend werden.

Gehen Sie weiter, wir haben hier alles unter Kontrolle...

AKW Fessenheim
Bild: Florival fr, Nuclear power plant Fessenheim (Ausschnitt),
CC BY-SA 3.0
Neues vom Pleiten-, Pech- & Pannenreaktor: Behörde hatte Störfall im AKW-Fessenheim heruntergespielt Dabei geht es um einen Rohrbuch im April 2014. Damals war Wasser in Schaltschränke geflossen und der Reaktor musste heruntergefahren werden.
Was die französischen Behördern und Betreiber damals verheimlicht hatten: das Herunterfahren mit Betriebsmitteln war gar nicht mehr möglich und man musste Bor in den Reaktor einleiten. Nur so zur Info: normalerweise werden Reaktoren über Steuerstäbe und Kühlmittelpumpen kontrolliert. Wenn das aber nicht mehr geht oder es ganz schnell sein muss - also in Notfällen - leitet man Bor in den Reaktor, um die Kernspaltung zu stoppen. Bor kühlt, absorbiert Neutronen und "entschärft" das Uran in den Brennstäben. Das macht man nur, wenn die Kacke so richtig am dampfen ist. Als Griff zum letzten Strohhalm, um eine Kettenreaktion zu verhindern. Aber diese Details kommen natürlich erst jetzt, zwei Jahre später ans Licht. Für Sicherheit und Umwelt habe keine Gefahr bestanden., hieß es damals seitens der Électricité de France. Haltet mich für einen zynischen Pessimisten, aber diese Verlogenheit der Behörden und Betreibern (hierzulande sicherlich ebenso - macht euch da nichts vor) ist genau der Grund, warum ich non-stopp einen Geigerzähler in unserer Wohnung laufen lasse. TICK ... TICK ... TICKTICK ... TICK ...

Wie war denn eigentlich das Wetter so, am Oster-Wochenende des Beinahe-GAUs? [...] Regen, dahinter Übergang zu wechselnder Bewölkung und gebietsweise Schauer, die auch kräftig ausfallen können. [...] Schwacher bis mäßiger Nord- bis Westwind [...] (Quelle) Juhu! Fallout in ganz Mitteleuropa!