我不是100%确定我为此权利写了标题,所以这就是我想要做的...
我有一个像这样定义的类...
class Animal
{
public:
Animal() : m_name("New Animal")
{
}
Animal(const std::string& name) : m_name(name)
{
}
Animal(const Animal& animal) : m_name(animal.name)
{
}
private:
const std::string name;
};
然后像这样初始化此类的对象...
Animal* m_animal = new Animal("Leroy");
在我程序的某个时刻,用户将单击一个按钮,该按钮将导致m_animal变为空。意味着名为Leroy的宠物不应该再存在。
我以为可以使用delete m_animal,但是一旦调用它,就不能再使用m_animal而不引起内存分配错误。
因此,我想我的问题是……由于名为Leroy的宠物没有被删除,我是否会使用以下代码导致内存泄漏……如果是的话,还有哪些方法可以完成此任务?
m_pet = NULL;
整个过程看起来像这样...
Animal* m_animal = new Animal("Leroy");
Animal* m_animal2 = new Animal("Boo");
std::cout << m_animal.name << endl;
m_animal = NULL;
m_animal = new Animal(m_animal2);
std::cout << m_animal.name << endl;
您确实想使用delete m_animal;
。你可以这样做:
std::cout << m_animal.name << endl;
delete m_animal;
m_animal = new Animal(m_animal2);
std::cout << m_animal.name << endl;
打完电话后delete m_animal
,就可以不再使用什么m_animal
指着,但你当然可以使用m_animal
再次指针。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句