对象构建语法

5 浏览
0 Comments

对象构建语法

这个问题已经在其他地方有了答案:

可能是重复的问题:

使用new实例化对象和不使用new实例化对象的区别是什么

创建对象:使用或不使用`new`

这两个语句有什么区别

 HttpUtil httpUtil;

 HttpUtil *net = new HttpUtil();

哪一个更好用?

admin 更改状态以发布 2023年5月21日
0
0 Comments

第一个语句创建了一个名为httpUtil的变量在"堆栈"上 -这意味着,一旦包含该行的函数完成,变量就会“超出范围”,并被释放(它使用的内存变得自由可以用于其他东西)。

第二个语句在"堆"上创建变量 -这意味着,变量将保留在内存中,直到您调用delete。在堆上分配变量时,您需要确保始终在某个时刻delete它,否则您将得到内存泄漏 -这就是您无法再看到*net变量,但内存仍然分配的地方。

0
0 Comments

第一种方法创建了一个自动变量。内存管理是自动的,分配速度更快,因为它在堆栈上进行,不存在内存泄漏的可能性。

第二种方法创建了一个动态变量-您需要清理内存,而在堆上进行的分配速度较慢。

始终优先使用第一种方法。如果必须使用动态分配(为了保持生存期或多态行为),请使用智能指针而不是原始指针。

0