>クリップボードの関数やドラッグアンドドロップ編集
>するところなどでGlobalAllocでメモリ確保してますが、
>これらのメモリはどのタイミングでフリーされるのでしょうか?
クリップボードの場合=SetClipboardDataで設定したハンドルとメモリーは、OS管理下になります。
任意のプロセスがEmptyClipboard()を呼び出した時点でOSが開放します。
ちなみに、SetClipboardDataしたあと、そのハンドルを開放してみると、SetClipboardDataしたプロセスでは、GetClipboardDataを使ってもデータの取得に失敗します。(Win2Kの場合)。
一方D&Dはよく知らないので調べてみた限りでは、
CDataObject::GetData()で、GlobalAllocしてその直後に
> lpsm->pUnkForRelease = NULL;
と設定してあり、IDataObject::GetData()を呼び出す側がこのメモリーを開放するという指定なので、大丈夫そうです。
問題のデータをもらう側は、futomoさんが指摘しているとおり、
CEditView.cpp の GetGlobalData() の戻り値をGlobalFreeする必要があるようです。
#どうもOLE・COM周りは苦手や