Visual C ++ не реализует сборку мусора, поэтому вопросы о том, следует ли / как включить его или какие библиотеки для этого требуются, являются спорными.
Наличие перечисленных функций не означает, что G C существуют. Это только означает, что VC ++ реализует интерфейсы, предписанные C ++ 11, которые позволяют G C работать. Но в последней версии 2019 таких функций нет, и реализация этих функций в VC ++ просто не работает, а модель безопасности указателя « » возвращается как pointer_safety::relaxed
, то есть вообще отсутствует. Цитата из заголовка VC ++ memory
:
// GARBAGE COLLECTION
enum class pointer_safety { relaxed, preferred, strict };
inline void declare_reachable(void*) {}
template <class _Ty>
_Ty* undeclare_reachable(_Ty* _Ptr) {
return _Ptr;
}
inline void declare_no_pointers(char*, size_t) {}
inline void undeclare_no_pointers(char*, size_t) {}
inline pointer_safety get_pointer_safety() noexcept {
return pointer_safety::relaxed;
}
Из Страуструпа G C ABI FAQ:
смягчено: безопасно выведенные и небезопасные указатели обрабатываются одинаково; как C и C ++ 98 [...]
Подробнее о SO о C ++ 11 G C: