gpt4 book ai didi

c++ - Visual C++ GC 接口(interface)如何启用它以及要包含哪个库

转载 作者:行者123 更新时间:2023-12-02 09:48:24 25 4
gpt4 key购买 nike

我开始学习 C++ 中的 GC 接口(interface),并在 Visual 2019 C++ 中运行了几个网络上可用的示例以实现以下功能:

上面的每个引用都有一个示例代码,在我的 VC++ 2019 中编译并成功执行

我想知道 VS2019 是否默认启用了 GC - 我的意思是我们不需要启用某些编译器开关或库来添加链接。

此外,如果 GC 默认启用,那么为什么我们没有“set_pointer_safety”而是“get_pointer_safety”? ' 只有?

那么我们如何使用 VC++ 中的 GC 功能,例如内存因 GC 而被释放?

最佳答案

I started learning GC interface in C++

你读过 C++11 标准了吗 n3337

Visual C++ GC Interface How to enable it and which library to include

正如其他人所解释的,Visual C++ 中没有真正的 GC

写一个简单 garbage collector相当容易。

刚刚阅读the GC handbook指导,和/或 Dragon Book , 和/或 Lisp In Small Pieces或者这个 Uniprocessor Garbage Collection Techniques纸。

请注意,您的 GC 的 C++ 垃圾收集标记或复制例程可以通过类似于 SWIG 的工具生成本着 s11n 的精神图书馆。

如果您的代码库很小(几万行 C++ 行和几十个 C++ class-es),您甚至可以生成 GC 支持例程你自己的元程序(或使用 GPP 预处理器或 GNU m4 一个或 GNU gawk )。如果您可以并且被允许使用最近的 GCC 编译您的 C++ 代码(例如 2020 年 7 月的 GCC 10),考虑写下您的 GCC plugin生成支持垃圾回收的 C++ 代码。另请参阅[本草案][9] 报告及其中的引用资料。公告the garbage collector 里面 GCC .

您可能会对 Boehm's conservative GC 感兴趣图书馆,或通过 Frama-C ,或通过 Clang static analyzer .

但是编写最先进的高性能 GC 需要付出很多努力,尤其是当您的 C++ 程序是多线程时。

附言。在两个githubgitlab在其他地方,您会发现垃圾收集语言的 C 或 C++ 开源实现,例如this (或 GNU guilePythonGHCOcaml )。我建议研究他们的 C++ 或 C 源代码以获取灵感。和 GCC内部有它的 own garbage collector (另请参阅我以前未维护的 GCC MELT 项目和我写的几张幻灯片)。

关于c++ - Visual C++ GC 接口(interface)如何启用它以及要包含哪个库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62845185/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com