不懂就问,为什么cpp使用了new之后再使用delete会报错?
main结束的时候没加delete[] BOOL;
可以正常运行;
但是,后面我加上了之后,
继续运行,就出现了报错
这是为什么啊?
我仅仅这样写
#include<iostream>using namespace std;
int main()
{
int *BOOL=new int;
BOOL[0] = 1, BOOL[1] = 1, BOOL[2] = 1, BOOL[3] = 1, BOOL[4] = 1, BOOL[5] = 1;
delete[] BOOL;
return 0;
}
也是报错
回答
bool *BOOL = new int
BOOL[0] = 1, BOOL[1] = 1, BOOL[2] = 1, BOOL[3] = 1, BOOL[4] = 1, BOOL[5] = 1;
只new了一个int的内存,后续使用了6个int,使用了未申请的内存,程序行为不可预知。
要修改正确很简单:
int *BOOL = new int[6];//你总共用了6个元素。
...
delete[] BOOL;
以上是 不懂就问,为什么cpp使用了new之后再使用delete会报错? 的全部内容, 来源链接: utcz.com/a/30839.html