Ich schrieb:
> Ist .value evtl ein (nicht initialisierter) Pointer?
Man sollte nicht vorm ersten Kaffee antworten, die Antwort gehört wohl
zur "Not even wrong" Klasse - nicht falsch, aber irrelevant.
Zum Ausgleich etwas, warum dein Ansatz verkehrt sein dürfte/könnte:
Man muß bei solchen Sachen im Auge haben, wem das Objekt gehört und
entsprechend, wer damit hantieren darf.
Üblich bei solchen Funktionen wie deinem "start" ist, dass das Objekt
(die TxMessage) dem Aufrufer gehört und er es dieser Funktion für eine
Weile überlässt. Was die Funktion währenddessen damit machen darf,
steht irgendwo in der Systembeschreibung (z.B. lesen ok, ändern
verboten). Sobald die Funktion zurückkehrt, ist wieder der Aufrufer der
Verantwortliche - er kann das Objekt jetzt für andere Aktionen
verwenden, es wieder freigeben oder sonstwas mit machen.
In einigen Fällen wird das Objekt der Funktion auf Dauer übergeben
(Besitzerwechsel). Der Aufrufer wird es nicht mehr anfassen, auch wenn
die Funktion zurückgekehrt ist. Sie hat sich jetzt darum zu kümmern,
dass das Objekt irgendwann wieder freigegeben wird, etc - sie bestimmt
die Lebensdauer.
Welcher Fall vorliegt, kann man so nicht sagen, das hängt von deinem
konkreten Programm/System ab - das meinte Rufus mit "ohne Kontext schwer
zu sagen".
Im ersten Fall wäre deine Methode verkehrt: sie würde das Objekt ändern,
das ihr gar nicht mehr gehört - evtl nicht mal mehr existiert (sprich,
du schreibst wild im Speicher herum).
Im zweiten Fall müßtest du dich darum kümmern, dass das Objekt auch
irgendwann wieder freigegeben wird, sonst läuft irgendwann dein Speicher
über.
Wenn man in einer solchen Bredouille steckt, ist das oft ein Zeichen,
dass man die API falsch benutzt.