我是C ++的新手,但据我了解,完成对象后,您需要从内存中删除对象。

有一个名为myClass的类。如果我创建一个新实例并调用其某些功能。像这样:

MyClass p;
p.funcCall(12);
p.anOtherFuncCall(4);


我应该如何再次释放p占用的内存?我阅读了this Microsoft文章。但是,如果我将其更改为:

MyClass* p = new MyClass
... call fucntions
delete p;


我无法再调用p.funcCall(12)之类的函数。

如果我错误地理解了c ++中的内存管理,我也很想听听。

最佳答案

在这段代码中

MyClass p;
p.funcCall(12);
p.anOtherFuncCall(4);


您不必手动删除p。一旦超出范围,它将自动失效。 here对此进行了更详细的说明。您可以这样离开。

MyClass* p = new MyClass
... call fucntions
delete p;


如果需要,您也可以这样做。由于p不再是MyClass而是指向一个的指针,因此语法有所不同。您必须这样写:

p->funcCall(12);

关于c++ - 在C++中从内存中删除对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58970862/

10-15 13:07