我是c ++ / cli的新手并且对这个新的vs gcnew感到困惑。
我知道用gcnew创建的对象将被垃圾收集,而用new创建的对象则没有。
即使我在某处读过应该使用new创建本机c ++类型。为什么会这样?因为我们甚至可以使用gcnew创建本机类型而忘记管理它们。这不会比管理使用new创建的对象更容易吗?
答案 0 :(得分:2)
不,无法使用gcnew
创建本机类型。垃圾收集器需要知道指针存在于特定对象的每个位置,因此它可以确定对象是否可访问并在压缩期间调整这些指针。
指向本机类型的指针可以保存在垃圾收集器不可见的任何地方,因此无法进行垃圾收集。
但是,很少使用new
创建本机类型的实例。如果生命周期有限,请使用局部变量或使其成为类成员。这不是Java。