我是否要删除函数范围内的内存?
Do I delete memories inside a function's scope?
问题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:我是否要删除答题器并从函数内的内存中点击?
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;
}
如果您之前删除了返回地址,则无法使用它,但是如果您在返回之前让它存活,则可以轻松地从外部控制内存。
对于第二部分,请注意 const 关键字,该关键字指示您无法修改方法中的值。
请记住,最好从方法范围外部或专用方法中管理内存(创建和删除)。
问题2是我们无法回答的,因为我们缺乏信息。
关于问题 1,您不能删除该对象,因为如果您这样做,那么您返回的内容将被删除。
事实上,一旦函数终止,res
就会超出范围。
问题 3:不,您不知道,因为它已经是 NULL。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 错误:未在此范围内声明'reverse'
- 并行用于C++17中数组索引范围内的循环
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 不计算一个范围内的完美数
- 错误:"imread"未在此范围内声明
- 我在范围内未声明的错误类有问题
- 如何在cpp中使用地图显示给定日期范围内(在下面的问题中)的费率?
- 我有一个数组,我想输入一个范围,然后找到范围内所有偶数的总和?
- 未在此范围内声明错误 'xy'
- 在C++中使用变量而不是"#define"来指定数组大小是不是一种糟糕的做法?(C错误:在文件范围内
- 命名空间范围内的外部 - GCC vs clang vs msvc
- 如何改进一堆在已知值范围内评估变量的 else-if 条件?
- 如何仅使用 While 循环在给定范围内找到可被 7 整除的计数整数
- 为什么我在具有 16 GB 内存的 Mac 上看到数 TB 范围内的 C++ 指针
- 我是否要删除函数范围内的内存?
- 错误:“内存集”未在此范围内声明
- 使用小于O(N^2)的内存,在i-j范围内找到小于O(j-i)的最小值
- 在适当的范围内使用动态内存
- 枚举内存范围内的页面