搜索

新手求助:关于释放动态分配存储单元请问如图紫色框中的解释是什

gecimao 发表于 2019-08-13 20:50 | 查看: | 回复:

  新手求助:关于释放动态分配存储单元,请问如图紫色框中的解释是什么意思?

  新手求助:关于释放动态分配存储单元,请问如图紫色框中的解释是什么意思?

  紫色框中的意思是释放动态分配存储单元,退出func函数能找到单元地址?什么叫释放?应该怎么释放?...

  紫色框中的意思是 释放动态分配存储单元,退出func函数能找到单元地址? 什么叫释放?

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  我们所谓的局部变量其实就是在函数里面定义的变量叫局部变量。因为这个变量只能被该函数使用。 其它函数要想使用这个变量就必须得到这个变量的内存单元的地址例如func函数中的ptr变量只能被func函数使用,

  当然其它函数要想使用ptr这个变量: 例如书中的ptr就是个指针变量。那么就是说其它函数要想修改这个变量的值得话就必须知道它的地址。因为ptr在内存中是有个物理单元的,是存在的bit位。

  我们知道c的程序总是从main函数开始执行的对吧。那么main函数里面定义的变量就会在main函数执行的时候分配内存空间,一个函数一个栈帧。当一个函数执行结束在此栈帧中的所以内存单元就会释放。

  根据书中说到:“ptr是局部变量,因此在func()函数退出后自动失效如果没有及时释放动态分配的内存单元,则在退出func()函数后再也找不到这些内存单元的地址。无法再使用” 这一段话就是说你应该在func()函数里面释放掉ptr指向的那些内存单元。

  free(ptr);//这就保证了在func函数完毕之前释放掉ptr指向的内存单元

  看到了吧。 如果你不写 free(ptr);这句话 那么func函数一旦执行结束ptr的内存单元就没了, 也就原味着ptr不存在了 而你忘了释放ptr指向的内存单元啊!

  没释放就意味着ptr指向的那块内存单元一直被占用着啊! 操作系统没法再使用那块空间!

  首地址都死了 在释放也不可以了因为 free(被释放的地址); 懂了吧。

  至于为什么函数一结束ptr就得死 这个我只能说你记住就可以。因为模拟现实就这样。解决现实问题。

本文链接:http://hem-larm.com/dongtaicunchufenpei/1187.html
随机为您推荐歌词

联系我们 | 关于我们 | 网友投稿 | 版权声明 | 广告服务 | 站点统计 | 网站地图

版权声明:本站资源均来自互联网,如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

Copyright @ 2012-2013 织梦猫 版权所有  Powered by Dedecms 5.7
渝ICP备10013703号  

回顶部