Вы можете использовать (по крайней мере в Linux) инструменты, такие как valgrind , чтобы преследовать такие ошибки.
И вы также можете использовать Сборщик мусора Бома (и не беспокоиться об освобождении памяти).
Некоторые (имхо плохо спроектированные) классы требуют удаления (т. Е. Потому что они делают важные вещи в деструкторах, помимо освобождения памяти) или не должны иметь ручных указателей на экземпляры.
Подробнее о RAII (который очень распространен в C ++, но не является универсальной мантрой: например, хороший код Ocaml не следует ему).
И вы можете использовать умные указатели.