问题描述
{
//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
,并避免在不需要时进行动态分配。对于自动变量,这看起来很合适。