In Win32 zum Einfügen von Daten in die Zwischenablage muss ich GlobalAlloc()
anrufen, dann GlobalLock()
, um einen Zeiger zu erhalten, kopieren Sie dann Daten, dann rufen Sie GlobalUnlock()
und SetClipboardData()
.Was passiert, wenn ich GlobalLock() aufrufen und dann GlobalUnlock() nicht aufrufen kann?
Wenn der Code in C++ eine Ausnahme könnte zwischen den Aufrufen GlobalLock()
und GlobalUnlock()
geworfen werden, und wenn ich diesen GlobalUnlock()
nicht kümmern wird nicht aufgerufen werden.
Ist das ein Problem? Was genau passiert, wenn ich GlobalLock()
anrufen und aus welchen Gründen auch immer eine Paarung GlobalUnlock()
Anruf überspringen?
Nein, GlobalFree() sollte nicht aufgerufen werden, wenn die Daten in die Zwischenablage eingefügt werden - Besitz wird an den Clipborad übergeben und Speicher später freizugeben. – sharptooth
Ja, Sie haben Recht, wenn der Aufruf von SetClipboardData erfolgreich durchgeführt wurde. Aber ansonsten müssen Sie beide anrufen. Post entsprechend modifiziert. –