野指针成效的调试
野指针效果的调试
------解决方案--------------------
应该这样:
&p与&pp是取p或pp本身的地址,这个肯定是不变的。
而p=NULL是将p指向空地址,但它本身的地址是不变的。
#include<iostream>
#include<cstdlib>
using namespace std;
int main(void){
char*p = new char[1];
char*pp = (char*)malloc(1);
cout<<"p="&p<<" "<<"pp="<<&pp<<endl;
cout<<"==========================="<<endl;
delete p;
free(pp);
cout<<"p="&p<<" "<<"pp="<<&pp<<endl;
cout<<"==========================="<<endl;
p=NULL;
pp=NULL;
cout<<"p="&p<<" "<<"pp="<<&pp<<endl;
/*
释放之后有可能变为野指针,所以特意调试了一下,结果得不到想要的
已经释放了堆的内存空间,为什么地址还是与释放之前相同
就算置为空之后打印的地址还是相同的
是我理解对指针地址的理解有问题还是我代码的格式不对
请指导一下,谢谢
*/
}
iostream
delete
null
c
------解决方案--------------------
应该这样:
#include<iostream>
#include<cstdlib>
using namespace std;
int main(void){
char*p = new char[1];
char*pp = (char*)malloc(1);
cout<<"p="<<(void*)p<<" "<<"pp="<<(void*)pp<<endl;
cout<<"==========================="<<endl;
delete p;
free(pp);
cout<<"p="<<(void*)p<<" "<<"pp="<<(void*)pp<<endl;
cout<<"==========================="<<endl;
p=NULL;
pp=NULL;
cout<<"p="<<(void*)p<<" "<<"pp="<<(void*)pp<<endl;
}
&p与&pp是取p或pp本身的地址,这个肯定是不变的。
而p=NULL是将p指向空地址,但它本身的地址是不变的。