C++ 我是否删除函数中的内存';什么范围?
问题1:如何从内存中删除res而不破坏返回C++ 我是否删除函数中的内存';什么范围?,c++,memory-leaks,C++,Memory Leaks,问题1:如何从内存中删除res而不破坏返回 Class1 *GetType(Class1 type) { Class1 *res = nullptr; switch (type) { case SCRIPTS_SPELL: { res = &sSpellScripts; break; } case SCRIPTS_EVENT: {
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;
}
问题2是我们无法回答的,因为我们缺乏信息 关于问题1,您不能删除对象,因为如果您这样做,那么您返回的内容将被删除 事实上,
res
将在函数终止后立即超出范围
问题3:不,您不需要,因为它已经是空的。如果您以前删除了回信地址,您就不能使用它,但是如果您在回信之前让它继续存在,您可以从外部轻松控制内存 对于第二部分,请注意const关键字,它表示无法修改方法内部的值
请记住,最好从方法范围外或专用方法中管理内存(创建和删除)。我知道!:-(我也是这么想的。:/Btw,我更新了另一个问题,如果有人(或你)能回答,我将非常深入。:)非常感谢!你为我节省了很多精力和力量。很高兴听到@user4136548。但是,请确保下次用您正在使用的语言标记您的问题。。。。。。。。。。。。。。。。。什么?!?!