内存分配与释放问题请教
码大虾 2017-09-21 04:45:03 string AesEncryptor::EncryptString(string strInfor) {
int nLength = strInfor.length();
int spaceLength = 16 - (nLength % 16);
unsigned char* pBuffer = new unsigned char[nLength + spaceLength];
memset(pBuffer, '\0', nLength + spaceLength);
memcpy_s(pBuffer, nLength + spaceLength, strInfor.c_str(), nLength);
m_pEncryptor->Cipher(pBuffer, nLength + spaceLength);
// 这里需要把得到的字符数组转换成十六进制字符串
char* pOut = new char[2 * (nLength + spaceLength)];
memset(pOut, '\0', 2 * (nLength + spaceLength));
Byte2Hex(pBuffer, nLength + spaceLength, pOut);
string retValue(pOut);
delete[] pBuffer;
delete[] pOut;
return retValue;
}
在delete[] pOut时报错,弹出对话框:Windows 已在 ***.exe 中触发一个断点。其原因可能是堆被损坏