vc++ 中的动态内存删除

Dynamic Memory Deletion in vc++

我在我的代码中使用 _aligned_malloc。但是它会抛出错误,如图所示。

CString sBuffer = _T("Hello");
TCHAR*   pBuffer; 

pBuffer = (TCHAR *)_aligned_malloc(1024, 16);

if (pBuffer == NULL) {
    ...............Error .. msg 
}

pBuffer =  sBuffer.GetBuffer(sBuffer.GetLength());

..................................................
.........................................................

sBuffer.ReleaseBuffer(sBuffer.GetLength());

if (pBuffer != NULL) {
    _aligned_free(pBuffer);
}

CString class 实现了 (LPCTSTR) 转换运算符,您可以使用它来获取 const TCHAR*。 请注意 TCHARMBCS 模式下定义为 char,在 UNICODE 模式下定义为 wchar .更多细节请参考tchar.h定义。

如果您想修改缓冲区的内容,您需要使用GetBuffer() 方法。完成后不要忘记调用 ReleaseBuffer()。所以,不需要手动分配内存。

您还可以轻松地从 TCHAR* 构造 CString。有一个构造函数可以做到这一点。