【发布时间】:2015-05-23 15:15:59
【问题描述】:
我在我的代码中使用 _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);
}
【问题讨论】:
-
pBuffer = sBuffer.GetBuffer(...)在此之后,pBuffer不再指向由_aligned_malloc分配的内存块(该内存块已泄漏)- 它指向由@987654326 分配的内存块@。此外,在随后的sBuffer.ReleaseBuffer()调用之后,pBuffer是一个悬空指针,不应该用于任何事情——尤其是尝试释放它不再指向的内存。
标签: visual-c++ mfc