DLL 中 C 样式函数中的静态变量
Static Variable in C-Style Function within DLL
>假设DLL中存在一个函数,如下所示:
const Object *Get( void )
{
static Object instance;
return &instance;
}
此静态对象将位于内存中的什么位置?如果从多个其他 DLL 调用此函数,则是否存在此静态对象的多个副本?
除非您采取明确的操作,否则我怀疑它最终会出现在可执行文件的.bss
部分或.data
部分。映射时,它们使用写入时复制语义进行映射。
如果要共享它,则需要告诉编译器将其放置在具有 shared
属性的部分中。执行此操作的视觉C++代码如下所示。
#pragma section("mysec",read,write,shared)
__declspec(allocate("mysec")) Object instance = 0;
const Object *Get( void )
{
return &instance;
}
我不知道在函数内声明静态变量时是否可以使用 __declspec
。
更多文档在这里
相关文章:
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 模板基类中的静态变量
- 类和静态变量
- 不同作用域中的静态变量和全局变量
- 静态变量声明和定义
- 是否可以依赖函数范围的静态变量来执行程序关闭期间调用的方法?
- 在类中继承静态变量?
- "local scope"中的 C++ 初始化静态变量
- 使用静态变量的递归调用的不同输出
- 复制文件流C++静态变量
- 跨模板化函数编译的静态变量
- C++编译器是否优化了顺序静态变量读取?
- C++,每个循环初始化一个新的静态变量
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 这些语句是否等效(静态变量、常量变量和泛型)
- 程序如何知道静态变量是否需要初始化?
- 类外的静态变量实例化
- 无法解析静态变量
- 函数局部静态变量:从性能角度来看的优点/缺点
- 访问从 CPP 文件到其他头文件的静态变量