ref new、gcnew(C++ 组件扩展)
ref new聚合的关键字分配进行垃圾回收时对象变得不可访问,并返回的句柄类型的实例 (^) 来分配的对象。
所有的运行库
内存分配的类型的实例的ref new被自动释放。
A ref new操作引发OutOfMemoryException时无法分配内存。
有关如何分配和释放内存的本机 c + + 类型的详细信息,请参阅的新删除操作员和。
Windows 运行时
使用ref new为 Windows 运行时对象的生存期,要进行自动管理分配内存。该对象是自动释放时其引用计数变为 0。 例如,当对象超出范围。
要求
编译器选项:/ZW
示例
示例
下面的示例使用ref new分配消息对象。
// mcppv2_ref_new_1.cpp
// compile with: /ZW
using namespace Platform;
ref struct Message {
String^ sender;
String^ receiver;
String^ data;
};
int main(Array<String^>^ args) {
Message^ h_Message = ref new Message;
}
公共语言运行时
为托管类型 (引用或值类型) 的内存分配的gcnew,和通过使用垃圾回收释放的。
要求
编译器选项:/clr
示例
示例
下面的示例使用gcnew分配消息对象。
// mcppv2_gcnew_1.cpp
// compile with: /clr
ref struct Message {
System::String ^ sender, ^ receiver, ^ data;
};
int main() {
Message ^ h_Message = gcnew Message;
}
示例
下面的示例使用gcnew来创建使用如引用类型的装箱的值类型。
// example2.cpp : main project file.
// compile with /clr
using namespace System;
value class Boxed {
public:
int i;
};
int main()
{
Boxed^ y = gcnew Boxed;
y->i = 32;
Console::WriteLine(y->i);
return 0;
}
Output