字符数组的动态内存分配

Dynamic memory allocation for character arrays

本文关键字:内存 分配 动态 数组 字符      更新时间:2023-10-16

好的,我试着像这样调整数组的大小:

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;

行,程序运行良好。

你的editBuffer有一个终止NUL字符吗?如果没有,请将strcpy替换为strncpy

函数可以简化为:

if ((editBufferCounter + 20) > editBufferSize)
{
    char* temp = new char[editBufferSize * 2];
    std::copy_n(editBuffer, editBufferSize, temp);
    delete[] editBuffer;
    editBufferSize *= 2;  
    editBuffer = temp;
}