Сбой функции буфера обмена Windows при назначении нулевого терминатора - PullRequest
0 голосов
/ 21 октября 2011

В своей функции для копирования текста я делаю следующее:

    // 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); 

Когда я копирую большой кусок текста, происходит сбой при назначении нулевого терминатора.Что-то не так с моей математикой в ​​расчете, сколько памяти выделить?

Спасибо

1 Ответ

1 голос
/ 21 октября 2011

Вам не нужно присваивать нулевой терминатор самостоятельно.

Если вы хотите сделать это самостоятельно, сделайте это так:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...