我有以下代码。当我尝试删除pDest时,会发生错误。我该如何删除pDest。还有其他操作需要删除吗?
{
int nReqLen = nSrcLength;
char* pDest = new char[nReqLen+1];
.
.
.
.
memcpy( (char*)pSource, pDest, nSrcLength );
delete pDest;
return nReturn;
}
答案 0 :(得分:4)
你需要说delete[] pDest
。它被分配为一个数组,因此需要将其作为数组删除。
答案 1 :(得分:0)
您需要在删除
中使用[] delete [] pDest;
因为它是一个数组
答案 2 :(得分:0)
delete pDest;
它调用未定义的行为,因为pDest
使用new T[N]
形式分配了内存。
如果您使用new T[]
语法,那么您必须编写delete []t
语法。
如果T
是U[N]
的typdef并且你写new T
,那么即使这样你也要使用delete []t
。例如,
typedef int IntArr[100];
int *pint = new IntArr; //See it is not of the form of new T[N];
//delete pint; //wrong
delete [] pint; //correct