在Win32中为了将数据粘贴到剪贴板中我必须调用GlobalAlloc(),然后
GlobalLock()
获取指针,然后复制数据,然后调用GlobalUnlock()和SetClipboardData().
如果代码在C中,则可能在对GlobalLock()和GlobalUnlock()的调用之间抛出异常,如果我不处理,则不会调用此GlobalUnlock().
问题不仅仅是关于你是否调用GlobalUnlock().您必须调用GlobalUnlock()和GlobalFree().必须调用两者才能释放您分配的内存:
原文链接:https://www.f2er.com/windows/372214.htmlHGLOBAL hdl = NULL; void *ptr = NULL try { hdl = GlobalAlloc(); ptr = GlobalLock(hdl); // etc... GlobalUnlock(hdl); ptr = NULL; SetClipboardData(...,hdl ); } catch (...) { if(ptr) GlobalUnlock(hdl); if(hdl) GlobalFree(hdl); throw; }