Destructors of global variables are not called

未关闭
#379 0 条评论 1 个 reaction 已指派 2 人 在 GitHub 查看

维护者通常 1 天内回复

@nunoplopes 已经在做这个了。

开始于 2026年10月8日。

  • #497 来自 @copilot-swe-agent —— 已关闭,未合并

评估

这个 Issue 还没有评估数据。

描述

bug
#include <iostream>

struct SideEffectTracker {
    int name;

    explicit SideEffectTracker(int tag) : name(tag) {
        std::cout << "[CONSTRUCTOR] " << name << " initialized.\n";
    }

    ~SideEffectTracker() {
        std::cout << "[DESTRUCTOR]  " << name << " destroyed.\n";
    }

    void touch() const {
        std::cout << "[USAGE]       " << name << " accessed.\n";
    }
};

// 1. Global statics (Initialized before main() in order of declaration)
SideEffectTracker g_global1(1);
SideEffectTracker g_global2(2);

void run_local_statics() {
    // 2. Function-local static (Lazy initialization: only runs on first call)
    static SideEffectTracker s_local_static(3);
    s_local_static.touch();
}

int main() {
    std::cout << "=== Entering main() ===\n\n";

    g_global1.touch();

    std::cout << "\n-- First call to run_local_statics() --\n";
    run_local_statics();

    std::cout << "\n-- Second call to run_local_statics() --\n";
    run_local_statics();

    std::cout << "\n=== Exiting main() ===\n";
    return 0;
    // Static destructors run after this line in REVERSE order of construction
}

should print:

[CONSTRUCTOR] 1 initialized.
[CONSTRUCTOR] 2 initialized.
=== Entering main() ===

[USAGE]       1 accessed.

-- First call to run_local_statics() --
[CONSTRUCTOR] 3 initialized.
[USAGE]       3 accessed.

-- Second call to run_local_statics() --
[USAGE]       3 accessed.

=== Exiting main() ===
[DESTRUCTOR]  3 destroyed.
[DESTRUCTOR]  2 destroyed.
[DESTRUCTOR]  1 destroyed.
主要语言
Rust
星标
310
派生
18
平均合并
10 小时 18 分钟
30 天内合并 PR
125

环境准备

这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Cpp2Rust/cpp2rust 的其他 Issue

查看 Cpp2Rust/cpp2rust 的全部 Issue

相似的 Issue

更多 Rust Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。