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

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


image.png

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


image.png

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

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

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


image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。