C++ 如何在VC++;2013?
据介绍,VC++2013支持最小GC 你们能给我举几个例子来说明它的用法吗 换句话说,在VC++2013中,如何使用GC 我想要的代码示例可能如下所示:C++ 如何在VC++;2013?,c++,visual-c++,memory-management,c++11,garbage-collection,C++,Visual C++,Memory Management,C++11,Garbage Collection,据介绍,VC++2013支持最小GC 你们能给我举几个例子来说明它的用法吗 换句话说,在VC++2013中,如何使用GC 我想要的代码示例可能如下所示: auto p = gcnew int; 有吗?您可能会对C++11中的最小GC感到失望:它不做垃圾收集!C++11中的最小垃圾收集支持由两部分组成: 有一个强制要求不要为每个人“隐藏”指针。当您有一个指针时,您不允许混淆这个指向系统的指针,例如,将它写入一个文件以便稍后读取,或者使用xor技巧创建一个双链接列表,同时只存储一个指针。本标准涉及
auto p = gcnew int;
有吗?您可能会对C++11中的最小GC感到失望:它不做垃圾收集!C++11中的最小垃圾收集支持由两部分组成:
。这些功能简而言之是:
void std::declare_reachable(void*p)
声明如果p
是非空指针,则p
是可访问对象,即使垃圾收集器已确定它不是。该函数可以分配内存,从而抛出template T*std::undeclare_reachable(T*p)
说明如果p
是一个非空指针,则p
将不再可访问。调用未声明的可到达(p)
的次数不得超过使用同一指针调用声明可到达(p)
的次数void std::declare_no_指针(char*p,size\t n)
声明从p
开始的n
字节范围不包含任何指针,即使垃圾收集器已确定内部将有指针void std::取消声明无指针(char*p,size\t n)
撤消声明从p
开始的n
字节中没有指针std::pointer\u safety std::get\u pointer\u safety()noexcept
如果实现具有严格的指针安全性,则返回未来可能会增加一定程度的垃圾收集,或者更可能是垃圾收集,但我不确定是否有具体的建议。如果添加了一些东西,它可能被称为垃圾收集,因为它实际上并没有清除所有垃圾:垃圾收集只会回收无法访问对象的内存,而不会试图销毁这些对象!也就是说,尽管系统可以重用其所在位置的内存,但它可以提供无限期活动对象的视图。@xmllmx:没有“示例”,这是核心语言的变化。它不是GC的实现,只是对语言进行了更改,以允许更合理的GC实现。@xmlmx:根本没有什么可演示的。最小GC支持只是意味着VC符合标准的这一部分,这只是一组编译器必须遵守的规则,以使人们能够编写GC。如果你看一看MS文章中链接的文章,你会发现“一个不支持垃圾收集并实现此处描述为无操作的所有库调用的实现是符合要求的。因此一个最小的实现是微不足道的。”没有什么可演示的。VC++2013没有GC可使用。VC实现了标准要求的“GC的最低语言支持”。它没有实现任何GC。@xmllmx:请阅读注释。“最小gc支持”并不意味着“我们实现了一个gc”。在VC的C++中没有GC实现(今天)。你想从C++中用GC来改变C++,去C++或CLI,或者现在的任何东西。