使用后垃圾收集声明的结构

Garbage-collect declared struct after using

{
    //i want remove it after using
    struct pTemporary001 {
        string name;
    };
    pTemporary001 *pTemporary001_var = new pTemporary001;
    ConsoleQuestioner<pTemporary001>("TEST TEXT", pTemporary001_var, [](string *name, pTemporary001 *temp) {
        temp->name = *name;
    });
    cout << "test : " << pTemporary001_var->name << endl;
    delete pTemporary001_var;
}

我想在使用后删除已声明的结构(pTemporary001)
当前级别的胶囊完成后会自动收集吗?还是在程序结束时收集?

C++ 没有垃圾回收。

并且(与动态语言不同)类型在 C++ 中不消耗内存1,因此没有垃圾可收集。

1 至少,不是所有类型。多态类型可能需要一些内存用于 RTTI 和虚拟分派。显示的 class 不是多态的。没有办法在程序内释放这样的内存。

or is it collected at end of program?

该语言对程序持续时间之外的内存没有任何规定,但实际上所有现代操作系统都会在进程终止时回收内存。


关于示例的一般建议:避免拥有裸指针,例如 pTemporary001 *pTemporary001_var,并在不需要时避免动态分配。这看起来适合自动变量。