程序员的修养:C javascript 函数栈作用机理

前端之家收集整理的这篇文章主要介绍了程序员的修养:C javascript 函数栈作用机理前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

进入函数时,最右边的参数arg2先入栈,按照C函数的值传递特性,此时传入的是string的副本,即arg2也是一个地址,指 向0xCFFFFFF0。然后arg1入栈,接着是返回地址入栈。因为arg2是4个字节,arg1也是一个字符串常量的地址,也是4个字 节。可以看到,此时的0xCFFFFFF0地址已经被返回地址覆盖掉了,而这个地址正是上次调用时的数组p的起始位置,并且 main中的局部变量string和printf的第二个参数arg2都指向这个地址,但此时该地址中的的值已经不是'h'了,同样的,因 为printf要为其局部变量分配内存,hello world的12个字节全部被覆写。

综上所述,printf在一进入的瞬间,哪怕不执行任何代码,原hello world的空间就被覆盖了,自然也不会得到正确的输 出。得到的全是随机的乱码。实际上也不能简单说是随机的,因为返回地址,printf的局部变量都是确定的,只是把这些 地址,局部变量都当成char输出时,肯定是乱码了,但肯定是确定的乱码

  1. 作用域链Scope其实就是对执行上下文EC中的变量对象VO|AO有序访问的链表

  2. 一系列活动的执行上下文从逻辑上形成一个

JS 同时靠上述两个 数据结构 执行。

猜你在找的JavaScript相关文章