可以说我们有这个......
class MyClass
{
int value;
void addIntToObject(int num)
{
value = num;
}
}
MyClass *object = new MyClass();
object->addIntToObject(1);
object->addIntToObject(2);
Run Code Online (Sandbox Code Playgroud)
现在让我们说我们再做一次......
object = new MyClass();
Run Code Online (Sandbox Code Playgroud)
通过在同一个对象上使用new两次,这是否意味着我们删除了存储在对象中的所有数据?有人可以向我解释在同一个对象上使用new两次的确切工作方式
这是一种释放记忆的有效方法吗?(比如使用删除和删除[])
你没有"在同一个对象上做两次新".所述new表达创建一个对象.通过做new两次你做了两个完全独立的对象.
变量object是一个指针.它指向其他对象.=指针上的运算符意味着更改指针指向的对象.
所以在你的代码中有两个对象,你改变object(指针)指向第二个对象.第一个对象仍然存在,但没有人知道它在哪里,这被称为内存泄漏.