不能用C++删除[]中的内存

不能用C++删除[]中的内存,c++,pointers,C++,Pointers,取消注释后删除[]数组;我犯了这个错误 CRT检测到应用程序在堆缓冲区结束后写入内存 我要怎么做才能纠正这个问题 #include <iostream> using namespace std; int main(){ char ch; char* array = new char[0]; int array_index = 0; while(cin>>ch){ if(ch != '!'){ arr

取消注释后删除[]数组;我犯了这个错误 CRT检测到应用程序在堆缓冲区结束后写入内存

我要怎么做才能纠正这个问题

#include <iostream>
using namespace std;

int main(){
    char ch;
    char* array = new char[0];
    int array_index = 0;
    while(cin>>ch){
        if(ch != '!'){
            array[array_index++] = ch;
        }else{
            break;
        }
    }

    //delete[ ] array;

}
我要怎么做才能纠正这个问题

#include <iostream>
using namespace std;

int main(){
    char ch;
    char* array = new char[0];
    int array_index = 0;
    while(cin>>ch){
        if(ch != '!'){
            array[array_index++] = ch;
        }else{
            break;
        }
    }

    //delete[ ] array;

}
您必须分配足够的内存来存储字符。零字符是不够的:

char* array = new char[0];
                      ^^^

我的建议是使用std::string。它将为您提供内存管理。

@AshotNavasardyan在本文底部有一个很好的例子。请注意,此示例查找一行的结尾,但很容易更改为查找“!”取而代之的是@ AsHoToWasasARDYAN,它先教C++标准库容器,而不是教硬的和不太有用的东西。新的char(0)???