c++ - DLL 的全局变量存储在内存中的什么位置?

标签 c++ windows dll vb6 global-variables

假设您有一个使用 C++ DLL 的 VB6 应用程序。它们共享相同的内存(您可以在另一个中使用一个指针)。 DLL 在 VB6 应用程序中声明为 Public Declare Function ... Lib ...

那么这如何符合“堆栈从内存的一侧增长,堆从另一侧增长”的理念呢? DLL的堆栈在哪里?应用程序启动时是否分配了全局 DLL 变量?如果是这样,为什么当我尝试从 DLL 运行函数时它只给我一个错误?

最佳答案

VB6 使用 thread local storage对于模块级变量,而不是数据段。这意味着模块中的公共(public)(全局)变量对于不同的线程可以有不同的值。这不是 C/C++ 开发人员所习惯的。

关于c++ - DLL 的全局变量存储在内存中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7086585/

相关文章:

c++ - 编写一个 C++ 程序,查找字符串中使用的元音字母的数量

c++ - 将位移动到掩码中给定位置的快速方法

c++ - 两个 dynamic_cast 问题

c++ - "standard output stream"和 "standard output device"有什么区别?

python - 为什么我的代码在 windows 上运行良好,但在 ubuntu 上却不行

c++ - 使用自定义 DirectShow 过滤器(DLL,已注册)

c# - 在运行 T4 模板以在解决方案中包含程序集时确定解决方案配置(调试/发布)

c++ - 通过这样的 const 指针修改非常量指针是否合法?

c# - 从具有 View 和数据库的 Windows 8.1/Windows Phone 8.1 应用程序创建一个 dll

c++ - 未解析的外部符号显示为错误 while/force :unresolved is used