问题标签 [static-variables]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4573 浏览

c++ - 动态库和主程序中的静态类变量

我正在开发一个包含静态 stl 容器类的“A”类的项目。这个类包含在我的主程序和 .so 文件中。该类使用默认(隐式,未声明)构造函数/析构函数。主程序使用 dlopen() 加载 .so 文件,并在其析构函数中调用 dlclose()。当 glibc 调用静态类成员变量的析构函数时,程序在 main 退出后崩溃。问题似乎是,当调用 dlclose() 时,调用了静态变量的析构函数,然后当 main exits() glibc 也调用析构函数时,导致双重释放。

我有两个问题,即:
1)在这种特殊情况下,为什么没有静态变量的两个副本(是的,我知道这听起来有些荒谬,但是由于主程序和 .so 文件都有一个单独编译的“A” ,他们不应该每个人都有一个吗?)
2)有没有办法解决这个问题而无需重写类'A'以不包含静态成员变量?

0 投票
3 回答
4569 浏览

c++ - 设置静态成员指针变量

我正在尝试在一个类中设置一个静态指针变量,但是对于我尝试设置的每个变量,我都会收到这些错误。

错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持默认整数

错误 C2040:“xscroll”:“int”的间接级别与“float *”不同

错误 C2440:“正在初始化”:无法从“浮点 **”转换为“整数”

这是代码 Enemy.h

试图设置变量

0 投票
1 回答
5256 浏览

shared-libraries - 主程序和共享库在 __static_initialization_and_destruction_0 中初始化相同的静态变量

有谁知道为什么在 dlopen() 中初始化的库会初始化主程序拥有的静态变量。主程序和共享库都有一个静态变量的副本,但是由于某种原因,共享库重新初始化了主程序的静态变量副本并对其进行了破坏,从而在主程序尝试破坏它时导致了段错误。

这是符号表中名称错误的情况吗?

0 投票
2 回答
440 浏览

c++ - 在静态变量的构造函数中检索静态 const 变量的值

我知道下面的代码会导致分段错误,因为在 A 的 cstr 处,B::SYMBOL 尚未初始化。但为什么?

实际上,A 是一个用作映射的对象,它将像 B 这样的类的符号映射到它们各自的 ID。C 静态地保存这个 map(A),这样它就可以将映射作为类函数提供。

A 的主要功能是作为 C 的映射,在启动时初始化自身。如果我仍然可以在代码中使用 B::ID 和 B::SYMBOL(没有#define pls),我应该如何在没有分段错误的情况下做到这一点?

(ps。假设我已经实现了包含警卫)

0 投票
4 回答
4617 浏览

c - 使全局静态变量多线程安全

我在 C 库中有全局静态变量,它们在多线程运行中生成异常。我需要以某种方式使它们安全(即,每个线程应该与这些变量的不同实例相关)。有什么推荐的方法吗?

0 投票
5 回答
8591 浏览

c++ - C 库的 C++ 包装器

最近我发现了一个我想在我的 C++ 项目中使用的 C 库。此代码配置了全局变量,并将其输出写入静态指针指向的内存。当我执行我的项目时,我希望运行 2 个 C 程序实例:一个具有配置 A,一个具有配置 B。我不能运行我的程序两次,所以我认为有 2 个选项:

  • 制作C++ 包装器:这里的问题是包装器类应该包含 C 库具有的所有全局/静态变量。由于 C 库中的函数使用这些变量,我将不得不为这些函数创建非常大的参数列表。
  • 复制粘贴C 库:这里我必须修改 C 库中每个函数和每个变量的名称。

哪一个是最快的解决方案?还有其他可能运行相同 C 源的 2 个实例吗?

谢谢,

最大限度

0 投票
4 回答
433 浏览

java - 构造函数再次被调用?

我有这个构造函数;

我在同一个类中有一个更新方法;

当我遵循调试器的流程时,我看到当调用 update 时,在方法的某处,程序进入构造函数并重新执行它(super、pageIndex 等)。为什么它去构造函数:DI 没有告诉它去那里。

如果你愿意,我可以进行更深入的分析,看看它去哪里构造函数。顺便说一下,changedComponentIndex是一个静态变量。

0 投票
6 回答
3569 浏览

c++ - 基类和继承中的静态方法中的静态变量

我有这些 C++ 类:

x静态变量会在 and 之间共享,A还是B每个人都有自己的独立x变量(这是我想要的)?

0 投票
1 回答
106 浏览

iphone - 用于类似类型对象之间通信的静态变量

我有一个异步下载图像的方法。如果图像与对象数组相关(我正在构建的应用程序中的一个常见用例),我想缓存它们。这个想法是,我传入一个索引号(基于我正在制作的表的 indexPath.row),并将图像存储在静态 NSMutableArray 中,键入我正在处理的表的行和。

因此:

我的索引正常,我可以通过我的 NSLog 输出看到这一点。但即使在我的 insertObject: atIndex: 调用之后,[imageCache count]也永远不会留下零。

这是我第一次涉足静态变量,所以我认为我做错了什么。

(上面的代码被大量删减,只显示正在发生的事情的主要内容,所以在查看它时请记住这一点。)

0 投票
3 回答
8599 浏览

c++ - 构造函数中的静态变量,有什么缺点或副作用吗?

我想要做的:每当要在程序中使用类的实例时,运行一些必备代码。此代码将检查 requiremts 等,并且应该只运行一次。

我发现这可以使用另一个对象作为构造函数中的静态变量来实现。这是一个更好的图片示例:

困扰我的是到目前为止我还没有看到类似的静态变量使用。是否有任何缺点或副作用,或者我错过了什么?或者也许有更好的解决方案?欢迎任何建议。