千家信息网

C++中delete之静态变量问题的示例分析

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇文章将为大家详细讲解有关C++中delete之静态变量问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。delete释放的指针,再访问例1#inclu
千家信息网最后更新 2025年01月19日C++中delete之静态变量问题的示例分析

这篇文章将为大家详细讲解有关C++中delete之静态变量问题的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    delete释放的指针,再访问

    例1

    #include using namespace std;class Box{public:    Box(int,int);    ~Box();    void volume();    static int height;    int width;    int length;};Box::Box(int wi, int le){    width = wi;    length = le;}Box::~Box(){cout<<"the pointer is released."<height<width<length<volume();    return 0;}

    //输出:
    /*100
    100
    width 16257288
    length 16253120
    -1812113408*/

    例2

    #include using namespace std;int * func(){    int * a = new int(10);    return a;}int main(){    int * p = func();    cout << *p << endl;//10    //delete关键字用来释放堆区数据    delete p;//    p = new int(5);    cout << *p << endl;//10    return 0;}

    //输出
    // 10
    // 16584968

    解释:

    访问 delete 之后的内存是一个未定义行为。 未定义行为可能产生任何结果,包括但不限于:产生期望的结果,产生未期望的结果,产生随机的结果,产生无法解释的结果,运行错误,随机的运行时错误,编译错误,等等 ---- 你只是放弃了对这片内存的所有权。获得所有权的人对这片内存做什么(或者说什么都不做)都不关你的事

    static 变量的储存区域

    https://blog.csdn.net/qq_32900237/article/details/107094377?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242参考文章

    例1

    #include using namespace std;class Box{public:    Box(int,int);    ~Box();    void volume();    static int height;    int width;    int length;};Box::Box(int wi, int le){    width = wi;    length = le;}Box::~Box(){cout<<"width: "<< width <<"the pointer is released."<height)<width)<length)<height)<width)<length)<height)<width)<length)<

    例2 帮助理解

    #include using namespace std;class Box{public:    Box(int,int);    ~Box();    void volume();    static int height;    int width;    int length;};Box::Box(int wi, int le){    width = wi;    length = le;}Box::~Box(){cout<<"width: "<< width <<"the pointer is released."<height)<width)<length)<height)<width)<length)<height)<width)<length)<height)<width)<length)<

    关于"C++中delete之静态变量问题的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    0