读书人

野指针成效的调试

发布时间: 2013-01-21 10:15:38 作者: rapoo

野指针效果的调试


#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指向空地址,但它本身的地址是不变的。

读书人网 >C++

热点推荐