C++ 我是否删除函数中的内存';什么范围?

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: {

问题1:如何从内存中删除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并从函数内部的内存中单击

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。但是,请确保下次用您正在使用的语言标记您的问题。。。。。。。。。。。。。。。。。什么?!?!