在Win32中爲了將數據粘貼到剪貼板我必須撥打GlobalAlloc()
,然後GlobalLock()
獲取一個指針,然後複製數據,然後調用GlobalUnlock()
和SetClipboardData()
。如果我調用GlobalLock()然後調用GlobalUnlock()會發生什麼?
如果代碼是C++的例外可能調用之間掀翻GlobalLock()
和GlobalUnlock()
,如果我不帶這個GlobalUnlock()
照顧不會被調用。
這是一個問題嗎?如果我撥打GlobalLock()
並出於任何原因跳過配對GlobalUnlock()
電話會發生什麼情況?
不可以,如果數據粘貼到剪貼板,則不應調用GlobalFree() - 將所有權傳遞給剪貼板,並且稍後將釋放內存。 – sharptooth 2010-01-29 10:13:18
是的你是對的,如果SetClipboardData的調用已經成功。但除此之外,你必須調用兩者。後相應修改。 – 2010-01-29 10:20:13