【发布时间】:2016-10-21 13:41:20
【问题描述】:
在我的 C++ 游戏中,我有一个指向 EnemyTypes 的指针数组。我使用 Visual Leak Detector 检测内存泄漏,它告诉我以下代码有泄漏:
vector<EnemyType*> enemyTypes(number_of_lines);
for (int i = 0; i < number_of_lines; i++)
{
enemyTypes[i] = new EnemyType();
}
假设number_of_lines 在这种情况下是 3。我怎么可能在这里制造泄漏?我能做点什么吗?
我大约一个月前开始学习 C++,现在每天都在学习,但是如果没有人解释我就无法理解某些东西(比如这样)。
编辑:我已修改代码以使用向量而不是普通数组。
【问题讨论】:
-
你试过向量吗?
-
只有在忘记释放内存时才会产生泄漏。上面的代码没有显示这个问题。创建一个 MCVE:stackoverflow.com/help/mcve
-
如果
enemyTypes是一个方法的本地并且你没有delete每个元素(和数组本身)那么你就有泄漏。考虑使用std::vector<EnemyType>,动态内存并不总是可取的,使用时,适当的智能指针可以利用管理部分。 -
这是我为学校制作的游戏,目前还不允许使用智能指针。我考虑过使用向量,但使用普通数组似乎更适合学习目的,但我现在会重新考虑使用它。
-
你使用指针有什么原因吗?您还可以将 EnemyType 存储在数组中(甚至更好:在向量中)。
标签: c++ memory-leaks