问题1:如何在不破坏退货的情况下从内存中删除资源?
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并从内存中单击了该功能?
bool Class2::IsFitToRequirements(Unit const *clicker, Unit const *click) const
问题3:我是否删除了有指针的记忆?例如:
QueryResult result = Database.Query(some query);
if (!result)
{
delete &result; // Should I or not?
return;
}
答案 0 :(得分:1)
如果您之前删除了地址,则无法使用返回的地址,但如果您在返回之前让它存活,则可以轻松地从外部控制内存。
对于第二部分,请注意const关键字,表示您无法修改方法内的值。
请记住,从方法范围外部或以专用方法管理内存(创建和删除)会更好。
答案 1 :(得分:0)
问题2是我们无法回答的问题,因为我们缺乏信息。
关于问题1,您无法删除该对象,因为如果您这样做,则会删除您返回的内容。
事实上,只要函数终止,res
就会超出范围。
问题3:不,你没有,因为它已经是NULL。