Указатели могут быть более быстрыми и могут вызывать меньше накладных расходов, как в структурах данных, так и в плане сокращения объема выполнения программы. (Обратите внимание на слово «можно».)
В общем случае правило заключается в том, что если вы выделили ресурс, выполнив собственное выделение или сделав что-то, сделав это от вашего имени, то ваша задача - освободить его, когда закончите.
Бремя выполнения вышесказанного возлагает ответственность на разработчика, а не на выполнение среды выполнения. Это имеет некоторые дополнительные преимущества в том, что вещи могут быть дольше, или пересекать границы, или выбрасываться в более подходящее время, или не должны нести вес сборщика мусора.
В экзотических случаях, обычно связанных с исключениями и областью действия, существуют некоторые крайние случаи, которые требуют, чтобы один был немного более осторожным, если избегается код, который выполняет очистка. Реально, эти случаи могут быть разработаны вокруг. Мы жили без управляемого кода в течение многих десятилетий.
Часто то, что делает указатели «сложными», просто не понимает, что происходит на аппаратном уровне. Это не что иное, как косвенность.
Указатели дают вам гораздо более простой доступ, и это может быть очень полезным, умным или необходимым. Вы можете указать куда угодно и относиться к этому как к чему угодно. Если вы используете свои богоподобные силы для добра, это очень, очень хорошо.
Мошенническая сторона, как правило, тратится впустую, забывая выпустить что-то, или выпуская это более одного раза, или ссылаясь на что-то после того, как оно отпущено, или отреагировав чем-то, когда вы никуда не указываете. Эти вещи часто приводят к впечатляющим сбоям, и, честно говоря, обычно указывают на то, что у вас логическая проблема, а не указатели хрупки.
Если вы надежный разработчик, использование указателей не должно быть более проблематичным, чем любая другая структура данных. Опять же, это не ракетостроение, и люди делали это десятилетиями, даже не моргнув глазом. В наши дни этому учат менее тщательно.
Все это говорит, если только вам не нужны указатели, случайные и экзоитичные случаи, которые обеспечивает хорошая сборка мусора, делают работу в управляемой среде намного приятнее. Замечательно иметь возможность захватить некоторую память, использовать ее и отказаться от нее, зная, что через некоторое время она может быть отброшена, если это имеет смысл. Это немного меньше кода со стороны кодера, в обмен на время выполнения, которое делает некоторые дополнительные подъемы.