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*
。
请注意 TCHAR
在 MBCS 模式下定义为 char
,在 UNICODE 模式下定义为 wchar
.更多细节请参考tchar.h定义。
如果您想修改缓冲区的内容,您需要使用GetBuffer()
方法。完成后不要忘记调用 ReleaseBuffer()
。所以,不需要手动分配内存。
您还可以轻松地从 TCHAR*
构造 CString
。有一个构造函数可以做到这一点。
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*
。
请注意 TCHAR
在 MBCS 模式下定义为 char
,在 UNICODE 模式下定义为 wchar
.更多细节请参考tchar.h定义。
如果您想修改缓冲区的内容,您需要使用GetBuffer()
方法。完成后不要忘记调用 ReleaseBuffer()
。所以,不需要手动分配内存。
您还可以轻松地从 TCHAR*
构造 CString
。有一个构造函数可以做到这一点。