在VC ++中删除字符数组

时间:2011-11-15 06:45:17

标签: c++

我有以下代码。当我尝试删除pDest时,会发生错误。我该如何删除pDest。还有其他操作需要删除吗?

{
    int nReqLen = nSrcLength;
    char* pDest = new char[nReqLen+1];
        .
        .
        .
        .
    memcpy( (char*)pSource, pDest, nSrcLength );
    delete pDest;
    return nReturn;
}

3 个答案:

答案 0 :(得分:4)

你需要说delete[] pDest。它被分配为一个数组,因此需要将其作为数组删除。

答案 1 :(得分:0)

您需要在删除

中使用[]

delete [] pDest;因为它是一个数组

答案 2 :(得分:0)

delete pDest;

它调用未定义的行为,因为pDest使用new T[N]形式分配了内存。

如果您使用new T[]语法,那么您必须编写delete []t语法。

如果TU[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