Да, ваш первый пример - утечка памяти. Каждый вызов new
должен иметь соответствующий вызов delete
(если new
не удалось).
В C ++ обычный способ сделать то, что вы пытаетесь сделать, - это просто объявить bool локально:
bool b = truel
b = false;
Если, тем не менее, по какой-то причине вам действительно требуется динамическое выделение, существуют умные указатели, которые управляют памятью, поэтому вам не нужно беспокоиться о вызове delete
. Вы можете посмотреть scoped_ptr
, unique_ptr
и shared_ptr
.
Наконец, C ++ имеет отличную стандартную библиотеку, которая обрабатывает множество возможных контейнеров и алгоритмов, предотвращая необходимость повторного их создания и избавляя от необходимости иметь дело с динамическим распределением в самых разных случаях.
Если вы серьезно относитесь к изучению C ++, я бы выбрал одну из книг в списке книг SO C ++ и изучил бы ее с нуля, а не пытался переносить идиомы Java в C ++ (это просто не будет работать хорошо).