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

问题描述

{
    //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和虚拟调度。所示的类不是多态的。无法在程序中释放此类内存。

还是在程序结束时收集?

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


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