字符数组的动态内存分配

时间:2011-12-04 01:37:29

标签: c++ dynamic-memory-allocation

好的,所以我试图按如下方式调整数组大小:

if((editBufferCounter + 20) > editBufferSize)
{
    char* temp;
    temp = new char[editBufferSize + 5];

    strcpy(temp, editBuffer);

    delete[] editBuffer;

    editBufferSize *= 2;  

    editBuffer = new char[editBufferSize];

    strcpy(editBuffer, temp);

    delete[] temp;

}

最后一行delete[] temp会导致内存问题。该程序简直崩溃了。我似乎无法解决这里的问题。

注意: 如果删除行delete[] temp;

,程序运行正常

2 个答案:

答案 0 :(得分:4)

您的editBuffer是否具有终止NUL字符?如果没有,请将strcpy替换为strncpy

答案 1 :(得分:3)

您的功能可以简化为:

if ((editBufferCounter + 20) > editBufferSize)
{
    char* temp = new char[editBufferSize * 2];

    std::copy_n(editBuffer, editBufferSize, temp);

    delete[] editBuffer;

    editBufferSize *= 2;  

    editBuffer = temp;
}