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;
我按照你写的 在qt下跑了一遍没啥问题 。
你不删除正常运行只能说名你分配没问题
内存泄漏了
删除出问题就是你删除那部分存在问题。
应该是内存泄露了吧,仔细看下代码
int n;
n = 。。。。。。
。。。。。。。
bool *BOOL = new int[n];
你可已通过的你的代码段设置n,但是你不能没有n,让程序自己猜你想要几个。
如果你想,随后开能添加或减少个数,个数不是个固定的长度。你可以用链表或者vector,或者map