Указатели в C и C++ дикие звери. Они чрезвычайно мощные, но в то же время такие опасные: небольшой недосмотр может нанести ущерб всему вашему приложению. Их основная проблема заключается в том, что вы и только вы должны следить за корректной работой с ними. Каждый динамически созданный объект (т.е. new T
) должен сопровождаться ручным удалением (т.е. delete T
). Забудьте об этом, и у вас получится хорошая утечка памяти.
Кроме того, динамически выделенные массивы (т.е. new T[N]
) должны быть удалены с помощью другого оператора (т.е. delete[]
). Это заставляет вас мысленно следить за тем, что вы выделили, и вызывать соответствующий оператор. Использование неправильного оператора приводит к неопределенному поведению, что ни в коем случае нельзя допускать при работе в C++.