c ++ / cli, использующий gcnew для создания нативных типов - PullRequest
0 голосов
/ 24 ноября 2011

Я новичок в c ++ / cli и путаюсь с этим новым vs gcnew.

Мне известно, что объекты, созданные с помощью gcnew, будут собираться мусором, тогда как объекты, созданные с помощью new, не будут.

Даже я где-то читал, что нативные типы c ++ должны создаваться с использованием new. Почему это так? потому что мы можем даже создавать нативные типы с помощью gcnew и забыть об управлении ими. Разве это не будет проще, чем управлять объектами с помощью new?

1 Ответ

2 голосов
/ 24 ноября 2011

Нет, нативные типы не могут быть созданы с gcnew. Сборщик мусора должен знать каждое место, где существует указатель на конкретный объект, чтобы он мог определить, достижим ли объект и настроить эти указатели во время сжатия.

Указатели на нативные типы можно хранить где угодно, невидимые для сборщика мусора, поэтому сборка мусора невозможна.

Однако, экземпляр собственных типов редко следует создавать с использованием new. Если время жизни ограничено, используйте локальную переменную или сделайте ее членом класса. Это не Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...