我是否删除函数范围内的记忆?
Do I delete memories inside a function's scope?
问题 1:如何在不损坏 return 的情况下从内存中删除 res?
Class1 *GetType(Class1 type)
{
Class1 *res = nullptr;
switch (type)
{
case SCRIPTS_SPELL:
{
res = &sSpellScripts;
break;
}
case SCRIPTS_EVENT:
{
res = &sEventScripts;
break;
}
case SCRIPTS_POINT:
{
res = &sWaypointScripts;
break;
}
default:
{
break;
}
}
return res;
}
问题2:是否在函数内部从内存中删除clicker和click?
bool Class2::IsFitToRequirements(Unit const *clicker, Unit const *click) const
问题三:是否删除有指针的内存?示例:
QueryResult result = Database.Query(some query);
if (!result)
{
delete &result; // Should I or not?
return;
}
问题 2 是我们无法回答的问题,因为我们缺乏信息。
关于问题1,你不能删除对象,因为如果你删除了,那么你return的东西就被删除了。
事实上,res
函数一结束就会超出范围。
问题 3:不,你不知道,因为它已经是 NULL。
如果您之前删除了 returning 地址,您将无法使用它,但如果您在 return 之前让它存活,您可以轻松地从外部控制内存。
对于第二部分,注意 const 关键字,它表示您不能修改方法内的值。
请记住,最好从方法范围外部或专用方法中管理内存(创建和删除)。
问题 1:如何在不损坏 return 的情况下从内存中删除 res?
Class1 *GetType(Class1 type)
{
Class1 *res = nullptr;
switch (type)
{
case SCRIPTS_SPELL:
{
res = &sSpellScripts;
break;
}
case SCRIPTS_EVENT:
{
res = &sEventScripts;
break;
}
case SCRIPTS_POINT:
{
res = &sWaypointScripts;
break;
}
default:
{
break;
}
}
return res;
}
问题2:是否在函数内部从内存中删除clicker和click?
bool Class2::IsFitToRequirements(Unit const *clicker, Unit const *click) const
问题三:是否删除有指针的内存?示例:
QueryResult result = Database.Query(some query);
if (!result)
{
delete &result; // Should I or not?
return;
}
问题 2 是我们无法回答的问题,因为我们缺乏信息。
关于问题1,你不能删除对象,因为如果你删除了,那么你return的东西就被删除了。
事实上,res
函数一结束就会超出范围。
问题 3:不,你不知道,因为它已经是 NULL。
如果您之前删除了 returning 地址,您将无法使用它,但如果您在 return 之前让它存活,您可以轻松地从外部控制内存。
对于第二部分,注意 const 关键字,它表示您不能修改方法内的值。
请记住,最好从方法范围外部或专用方法中管理内存(创建和删除)。