0
を割り当てるときにクラッシュ:私は、テキストの大きな塊をコピーする場合はnullターミネータを割り当てるときWindowsのクリップボード機能、私は次の操作を実行し、テキストをコピーするために私の機能では、ヌルターミネータ
// Allocate a global memory object for the text.
hglbCopy = GlobalAlloc(GMEM_MOVEABLE,
((text.length() + 1) * sizeof(WCHAR)));
if (hglbCopy == NULL)
{
CloseClipboard();
return;
}
// Lock the handle and copy the text to the buffer.
lptstrCopy = (LPWSTR)GlobalLock(hglbCopy);
memcpy(lptstrCopy, text.c_str(),
(text.length() + 1) * sizeof(WCHAR));
lptstrCopy[(text.length() + 1) * sizeof(WCHAR)] = (WCHAR) 0; // null character CRASHES HERE
GlobalUnlock(hglbCopy);
、それがクラッシュします。割り振るメモリの量を計算するのに何か問題がありますか?
おかげ
よしありがとう! – jmasterx
言い換えれば、 'lptstrCopy'は' WCHAR'の配列であり、インデックスを付ける必要があります。 'char'の配列としてインデックスを作成しています。 –
まだバッファが1つの 'WCHAR'でオーバーフローしています。 '+ 1'を取り除く。実際、ライン全体はまったく必要ではありません。ヌルターミネータはmemcpyの一部としてコピーされました。 –