首页 > 代码库 > free 或delete后指针怎么样了
free 或delete后指针怎么样了
free()和delete()只是把指针所指向的内存释放掉,但是并没有把指针本身删除,也没有把指针置为NULL;
#include<iostream>using namespace std;int main(void){ char *p=(char *)malloc(100*sizeof(int)); strcpy(p,"Hello World"); cout<<"释放前指针p的地址:"<<&p<<endl; free(p); cout<<"释放后指针p的地址:"<<&p<<endl; if(p!=NULL) cout<<p<<endl; getchar();}
运行结果:
从运行结果可以看出,指针p仍然存在,而且地址也没有变,只是指向了一大坨乱七八糟的东西。
free(p)之前:
free(p)之后:
因此:不等于NULL的指针不一定是有效的指针,指针初始化的时候不要忘记置为NULL,或者指向有效的地址,指针删除后也最好置为NULL
char *p=NULL;char *str=new char[100];free(str);str=NULL;
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。