使用后垃圾收集声明的结构
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
,并在不需要时避免动态分配。这看起来适合自动变量。
{
//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
,并在不需要时避免动态分配。这看起来适合自动变量。