• 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;
  • 相关阅读:
    无约束梯度算法
    resp协议
    union和union all
    cgi和fastcgi
    证书认证原理
    HTTPS的实现原理
    redis消息队列优缺点有哪些?redis消息队列的优缺点
    cname是个什么东西
    CDN
    PHP 删除数组中的元素
  • 原文地址:https://www.cnblogs.com/qianwen/p/3831861.html
Copyright © 2020-2023  润新知