首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C++中函数内的静态变量-即使函数不运行也分配?

C++中函数内的静态变量-即使函数不运行也分配?
EN

Stack Overflow用户
提问于 2010-05-31 00:06:17
回答 3查看 1.1K关注 0票数 17

我一直在互联网上阅读C++,有一件事我还没有完全找到答案。

我知道在函数中使用的静态变量类似于全局变量,并且该函数的后续调用将使静态变量在调用之间保持其值不变。

但是,如果函数从未被调用过,静态变量会被分配吗?

谢谢

EN

回答 3

Stack Overflow用户

发布于 2010-05-31 00:12:40

我确信这将取决于实现。MSVC所做的是-在EXE或DLL的自动数据段中分配静态对象。但是,构造函数仅在第一次执行包含静态对象的函数时执行。

票数 1
EN

Stack Overflow用户

发布于 2010-05-31 00:28:30

视情况而定。如果你的意思是,从来没有调用过函数,那么你的编译器很可能不会分配它,甚至不会把它放在函数代码中。但是,如果您使其依赖于用户输入,而该用户输入碰巧从未出现,那么它可能是预先分配的。然而,您在这里遇到了一个雷区,最好假设它总是在控件进入引用它的函数时创建的。

票数 0
EN

Stack Overflow用户

发布于 2010-05-31 01:07:31

在类(成员)或函数上定义的静态变量在函数调用期间不会像非静态变量那样在堆栈上动态分配。它们被分配在为全局和静态数据保留的生成代码的另一个区域中。因此,无论是否调用函数,实例化包含静态成员的类或不包含静态成员的类,都会在程序数据区中为它们的数据保留一个空间。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2939367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档