Я давно пользуюсь C ++, и меня интересует ключевое слово new . Просто я должен использовать это или нет?
1) С ключевым словом new ...
MyClass* myClass = new MyClass();
myClass->MyField = "Hello world!";
2) Без ключевого слова new ...
MyClass myClass;
myClass.MyField = "Hello world!";
С точки зрения реализации, они не кажутся такими уж разными (но я уверен, что это так) ... Однако мой основной язык - C #, и, конечно, я привык к 1-му методу.
Сложность заключается в том, что метод 1 сложнее использовать с классами std C ++.
Какой метод я должен использовать?
Обновление 1:
Недавно я использовал ключевое слово new для heap memory (или free store ) для большого массива, который выходил из области видимости (т.е. возвращался из функция). Если раньше я использовал стек, что приводило к повреждению половины элементов вне области видимости, переключение на использование кучи гарантировало, что элементы были в такте. Ура!
Обновление 2:
Мой друг недавно сказал мне, что есть простое правило для использования ключевого слова new
; каждый раз, когда вы набираете new
, введите delete
.
Foobar *foobar = new Foobar();
delete foobar; // TODO: Move this to the right place.
Это помогает предотвратить утечки памяти, поскольку вы всегда должны куда-то помещать удаление (т. Е. Когда вы вырезаете и вставляете его либо в деструктор, либо в другое место).