我应该在C ++中使用delete
new
实例,对吧?
class C {
public:
void hello() {...};
};
如果我有上述类的实例,则可能不得不使用它
C* c = new C();
c->hello();
delete c;
对吗?怎么样:
(new C())->hell();
我可以这样做吗? destructor
是否会自动调用并释放内存?
答案 0 :(得分:4)
否,因为您从不调用public void onClick(View v) {
if(player_turn){
if (((Button) v).getText().toString().equals("")) {
((Button) v).setText("X");
dohandler(computermakemove());
player_turn = !player_turn;
}
}
player_turn = !player_turn;
}
,所以不会自动调用析构函数。但是,您可以创建一个智能指针,一次即可为您完成此操作:
delete
答案 1 :(得分:1)
在现代c ++中,不再需要<dependency>
<groupId>org.example</groupId>
<artifactId>module-a</artifactId>
<version>1.0-SNAPSHOT</version>
<classifier>tests</classifier>
</dependency>
来增加资源。相反,您可以使用new
库,如下所示:
memory
在这里,资源已被占用,您不能忘记删除分配给其他地方的内容。
答案 2 :(得分:0)
否,在第二种情况下将不会调用析构函数,而且还会发生内存泄漏。仅当显式调用delete
时,才会调用动态分配对象的析构函数。