LPWSTR CMemPool::GetDuplicateStringW(LPCWSTR szSrc) { assert(szSrc); DWORD dwBytes = (wcslen(szSrc) + 1) * sizeof(WCHAR); LPWSTR pString = (LPWSTR)GetAlignedMemory(dwBytes, sizeof(WCHAR)); if (pString) { wcscpy_s(pString, dwBytes, szSrc); } return pString; }
LPSTR CMemPool::GetDuplicateStringA(LPCSTR szSrc) { assert(szSrc); DWORD dwBytes = (_mbslen((const unsigned char*)szSrc) + 1) * sizeof(CHAR); LPSTR pString = (LPSTR)GetAlignedMemory(dwBytes, sizeof(CHAR)); if (pString) { _mbscpy_s((unsigned char*)pString, dwBytes, (const unsigned char*)szSrc); } return pString; }
wchar_t* GetAlignedPtr(std::vector<wchar_t>* buf, size_t alignment, size_t nchars) { buf->resize(nchars + ceil((3 * alignment) / sizeof(wchar_t))); return reinterpret_cast<wchar_t*>(GetAlignedMemory(reinterpret_cast<char*>(buf->data()), alignment, 0)); }
char* GetAlignedPtr(std::vector<char>* buf, size_t alignment, size_t nbytes) { buf->resize(nbytes + 3 * alignment); return GetAlignedMemory(buf->data(), alignment, 0); }