Я пишу две строки в памяти, используя CMemFile::Write()
:
void CLISTCTRLDlg::Export(LPTSTR *pBlock)
{
CMemFile outMem(32768);
CString csHeader = _T("EmpId EmpName EmpAddress\n");
outMem.Write(csHeader.GetBuffer(0), csHeader.GetLength());
CString csInfo = _T("1 TestName TestAddress\n");
outMem.Write(csInfo.GetBuffer(0), csInfo.GetLength());
long lLen = outMem.GetLength() + 1;
BYTE *mBlock = outMem.Detach();
*pBlock = (LPTSTR) malloc(sizeof(char) * lLen);
memcpy(*pBlock, mBlock, lLen-1);
(*pBlock)[lLen -1] = 0;
OutputDebugStringW(*pBlock);
free(outMem);
}
В окне вывода отображается строка «EmpId EmpNam? ???????? ?????????» когда выполняется оператор OutputDebugStringW (* pBlock); .
Я не понимаю, почему данные усекаются.
Более того, система генерирует необработанное исключение при выполнении оператора free (outMem); .
Может кто-нибудь подсказать мне решение и сообщить, где я ошибаюсь?
Спасибо.