回复:也来谈谈“先赋值后使用”!

emil128

  • 帖子

    271
  • 精华

    10
  • 被关注

    21

论坛等级:侠圣

注册时间:2011-05-16

普通 普通 如何晋级?

发布于 2018-01-15 10:04:35

9楼

楼主实验做的是对的,可结论我看不懂。

“块调用结束临时变量不会释放,释放的是一些局部变量”???

什么是临时变量?什么是局部变量?各是什么地址类型?


1、每一个优先级都拥有属于自己的本地堆栈区(L区),所有运行在该优先级下的OB、FB、FC的Temp都属于该区域。

2、不同优先级的本地堆栈区不同,不会互相干扰。这是西门子从系统角度保证了各中断程序和主程序间的堆栈数据安全。

3、每次调用FB或FC其temp区域的本地堆栈地址由系统指定,调用结束释放(只是不再占用,并不清零)。所以FB或FC的调用可能会使用重合的本地堆栈,这也就是为什么temp不能跨周期传递的原因,于是所有需要跨周期传递的自保、边沿都不能用temp。


L 堆栈永远以地址“0”开始。 
在 L 堆栈中,会为每个数据块保留相同个数的字节,作为存放每个块所拥有的静态或局部数据。
当某个块终止时,那么它的空间随之也被重新释放出来。

指针总是指向当前打开块的第一个字节。



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-300/400

共有54618条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。