c ++ / cli使用gcnew创建本机类型

时间:2011-11-24 06:49:04

标签: c++-cli

我是c ++ / cli的新手并且对这个新的vs gcnew感到困惑。

我知道用gcnew创建的对象将被垃圾收集,而用new创建的对象则没有。

即使我在某处读过应该使用new创建本机c ++类型。为什么会这样?因为我们甚至可以使用gcnew创建本机类型而忘记管理它们。这不会比管理使用new创建的对象更容易吗?

1 个答案:

答案 0 :(得分:2)

不,无法使用gcnew创建本机类型。垃圾收集器需要知道指针存在于特定对象的每个位置,因此它可以确定对象是否可访问并在压缩期间调整这些指针。

指向本机类型的指针可以保存在垃圾收集器不可见的任何地方,因此无法进行垃圾收集。

但是,很少使用new创建本机类型的实例。如果生命周期有限,请使用局部变量或使其成为类成员。这不是Java。