不能用C++删除[]中的内存
取消注释后删除[]数组;我犯了这个错误 CRT检测到应用程序在堆缓冲区结束后写入内存 我要怎么做才能纠正这个问题不能用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
#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)???