En Win32 para pegar datos en el portapapeles tengo que llamar a GlobalAlloc()
, luego GlobalLock()
para obtener un puntero, luego copiar datos, luego llamar a GlobalUnlock()
y SetClipboardData()
.¿Qué sucede si llamo a GlobalLock() y luego no puedo llamar a GlobalUnlock()?
Si el código está en C++ una excepción podría ser lanzado entre llamadas a GlobalLock()
y GlobalUnlock()
y si no me encargo de esto GlobalUnlock()
no se llamará.
¿Esto es un problema? ¿Qué sucede exactamente si llamo al GlobalLock()
y por alguna razón me salteo una llamada de emparejamiento GlobalUnlock()
?
No, no se debe invocar GlobalFree() si los datos se pegan en el portapapeles: la propiedad pasa al clipborad y liberará la memoria una vez más tarde. – sharptooth
Sí, tiene razón, si la llamada a SetClipboardData se ha realizado correctamente. Pero, de lo contrario, debe llamar a ambos. Publicación modificada en consecuencia. –