产生上面问题的原因:
1.在程序里释放了野指针:
#include <iostream>
using namespace std;
void main()
{
int *p ;
delete p;//释放野指针指向内容执行错误
}
#include <iostream>
using namespace std;
void main()
{
int *p =new int(1);
delete p;释放p指向的内存后P变成了野指针
delete p;///释放野指针指向的内存发生错误
}
#include <iostream>
using namespace std;
void main()
{
int *p =new int(1);
delete p;
p=0;/重新定位p指针指向的内容为null
delete p;///释放P指向的内存不会错误
}
2.delete 所释放的内存只能是堆内存,企图用他们来释放栈内存,会导致 debug asserttion failed!
栈区的内容是会自动释放的,不需要手动去释放