zoukankan      html  css  js  c++  java
  • 动态内存会被自动释放吗?

           函数体内的局部变量在函数结束时自动消亡。很多人误以为示例7-6是正确的。理由是p是局部的指针变量,它消亡的时候会让它所指的动态内存一起完蛋。这是错觉!

    void Func(void)
    {
        char *p = (char *) malloc(100);    // 动态内存会自动释放吗?
    }

     

    我们发现指针有一些“似是而非”的特征:

    1)指针消亡了,并不表示它所指的内存会被自动释放。

    2)内存被释放了,并不表示指针会消亡或者成了NULL指针。

    这表明释放内存并不是一件可以草率对待的事。也许有人不服气,一定要找出可以草率行事的理由:

        如果程序终止了运行,一切指针都会消亡,动态内存会被操作系统回收。既然如此,在程序临终前,就可以不必释放内存、不必将指针设置为NULL了。终于可以偷懒而不会发生错误了吧?

        想得美。如果别人把那段程序取出来用到其它地方怎么办?



  • 相关阅读:
    JSP第六次作业
    JSP第五次作业
    第二次软件测试作业
    JSP第四次作业(2)
    JSP第四次作业(1)
    JSP第七次作业
    JSP第六次作业
    session对象练习
    JSP第四次作业(2)
    JSP第四次作业(1)
  • 原文地址:https://www.cnblogs.com/XiHua/p/3807847.html
Copyright © 2011-2022 走看看