美文网首页
C++中的局部静态变量只初始化一次学习记录

C++中的局部静态变量只初始化一次学习记录

作者: Fa1se003 | 来源:发表于2018-06-07 15:32 被阅读102次

没事干的时候忽然间看到一个问题,说局部静态变量只初始化一次,我带着疑问就做了个实验试了一下,结果如下:


image.png

想了一会,还是不知道是为什么?果断看下汇编来解疑。


image.png
看到了吗?它先去判断 004237A8 这个地址
如果不是1,就给它赋值1,然后给00420A4赋值 [ebp+8](我传的x参数)

如果是1,直接跳过赋值代码块
这样它就做到了只赋值一次的效果。

怀着调戏的心情来打乱它的节奏
定义一个指针指向004237A8,执行过给它置0
执行结果如下图:


image.png

相关文章

  • iOS 中 static 的作用和内存划分

    修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 对局部变量用static声明,把它分配在静态存...

  • modern c++(2)-局部静态变量线程安全

    局部静态变量 局部静态变量就是定义在函数内部的静态变量。它的初始化发生在该函数第一次被调用执行到局部静态变量定义语...

  • C++中的局部静态变量只初始化一次学习记录

    没事干的时候忽然间看到一个问题,说局部静态变量只初始化一次,我带着疑问就做了个实验试了一下,结果如下: 想了一会,...

  • 浅析ios中static和const的使用

    一、static 修饰局部变量: 1、让局部变量只初始化一次 2、局部变量在程序中只生成一份内存 ...

  • 快速理解关键词static、const、extern和用处

    static和const的使用 static 修饰局部变量作用:让局部变量只初始化一次局部变量在程序中只有一份内存...

  • C++面试考点总结

    static作用是什么?在C和C++中有何区别? static可以修饰局部变量(静态局部变量)、全局变量(静态全局...

  • QHP_27static和copy的语法

    static的作用: 1.修饰局部变量:让局部变量只初始化一次,局部变量在程序中只有一份内存,并不会改变局部变量的...

  • static

    修饰局部变量- 改变变量生命周期 - 变量只初始化一次,局部变量在程序中只有一份内存。 不会改变变量的作用域, 只...

  • 正确使用const,static,extern

    static 修饰局部变量 让局部变量只初始化一次 局部变量在程序中只有一份内存 并不会改变局部变量的作用域,仅仅...

  • 在iOS xcode的开发中 static的作用

    1 修饰局部变量 * 让局部变量只初始化一次 * 局部变量在程序中只有一份内存 * 并不会改变局部变量的作用域,仅...

网友评论

      本文标题:C++中的局部静态变量只初始化一次学习记录

      本文链接:https://www.haomeiwen.com/subject/ftugsftx.html