好的,所以我试图按如下方式调整数组大小:
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;
答案 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;
}