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

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

看到了吗?它先去判断 004237A8 这个地址
如果不是1,就给它赋值1,然后给00420A4赋值 [ebp+8](我传的x参数)
如果是1,直接跳过赋值代码块
这样它就做到了只赋值一次的效果。
怀着调戏的心情来打乱它的节奏
定义一个指针指向004237A8,执行过给它置0
执行结果如下图:

没事干的时候忽然间看到一个问题,说局部静态变量只初始化一次,我带着疑问就做了个实验试了一下,结果如下:
想了一会,还是不知道是为什么?果断看下汇编来解疑。
如果是1,直接跳过赋值代码块
这样它就做到了只赋值一次的效果。
怀着调戏的心情来打乱它的节奏
定义一个指针指向004237A8,执行过给它置0
执行结果如下图:
本文标题:C++中的局部静态变量只初始化一次学习记录
本文链接:https://www.haomeiwen.com/subject/ftugsftx.html
网友评论