删除指针出现断言错误我写的一个冒泡排序,当我去掉注释(delete p1和delete p2)之后,就出现断言错误:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)这是为什么呀?#include using namespace std;void Swap(int *p1,int *p2);int
来源:学生作业帮助网 编辑:作业帮 时间:2024/07/29 08:29:45
![删除指针出现断言错误我写的一个冒泡排序,当我去掉注释(delete p1和delete p2)之后,就出现断言错误:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)这是为什么呀?#include using namespace std;void Swap(int *p1,int *p2);int](/uploads/image/z/13596932-20-2.jpg?t=%E5%88%A0%E9%99%A4%E6%8C%87%E9%92%88%E5%87%BA%E7%8E%B0%E6%96%AD%E8%A8%80%E9%94%99%E8%AF%AF%E6%88%91%E5%86%99%E7%9A%84%E4%B8%80%E4%B8%AA%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F%2C%E5%BD%93%E6%88%91%E5%8E%BB%E6%8E%89%E6%B3%A8%E9%87%8A%EF%BC%88delete+p1%E5%92%8Cdelete+p2%EF%BC%89%E4%B9%8B%E5%90%8E%2C%E5%B0%B1%E5%87%BA%E7%8E%B0%E6%96%AD%E8%A8%80%E9%94%99%E8%AF%AF%EF%BC%9A_BLOCK_TYPE_IS_VALID%28pHead-%3EnBlockUse%29%E8%BF%99%E6%98%AF%E4%B8%BA%E4%BB%80%E4%B9%88%E5%91%80%3F%23include+using+namespace+std%3Bvoid+Swap%28int+%2Ap1%2Cint+%2Ap2%29%3Bint)
删除指针出现断言错误我写的一个冒泡排序,当我去掉注释(delete p1和delete p2)之后,就出现断言错误:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)这是为什么呀?#include using namespace std;void Swap(int *p1,int *p2);int
删除指针出现断言错误
我写的一个冒泡排序,当我去掉注释(delete p1和delete p2)之后,就出现断言错误:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)这是为什么呀?
#include
using namespace std;
void Swap(int *p1,int *p2);
int main()
{
const int maxnumbers=5;
int Bubble[maxnumbers];
int i=0,j=0;
for(i=0;i
删除指针出现断言错误我写的一个冒泡排序,当我去掉注释(delete p1和delete p2)之后,就出现断言错误:_BLOCK_TYPE_IS_VALID(pHead->nBlockUse)这是为什么呀?#include using namespace std;void Swap(int *p1,int *p2);int
可能是编译器的原因,在VS 2005里面,new和delete必须严格匹配.你在申请了内存之后,移动了指针,因此,指针所指的位置和最初已经不同,不能delete.
看下面的代码:
#include
using namespace std;
int main()
{
int a[2]={1,2};
int *p=new int;
p=&a[0];
// delete p;
p=0;
return 0;
}
在最初分配的时候,我机器上,p指向的地址是0x003a6018,而a的地址是0x0013ff57,而delete只能释放位于0x003a6018的内存.
注释掉p=&a[0];之后,delete就没有问题了.