首页 > 其他 > 详细

free 或delete后指针怎么样了

时间:2014-07-09 17:15:21      阅读:258      评论:0      收藏:0      [点我收藏+]

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();
}

运行结果:

bubuko.com,布布扣

从运行结果可以看出,指针p仍然存在,而且地址也没有变,只是指向了一大坨乱七八糟的东西。

free(p)之前:

bubuko.com,布布扣

free(p)之后:

bubuko.com,布布扣

因此:不等于NULL的指针不一定是有效的指针,指针初始化的时候不要忘记置为NULL,或者指向有效的地址,指针删除后也最好置为NULL

char *p=NULL;
char *str=new char[100];

free(str);
str=NULL;

 

 

free 或delete后指针怎么样了,布布扣,bubuko.com

free 或delete后指针怎么样了

原文:http://www.cnblogs.com/qianwen/p/3831861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!