Не только утечки памяти или повторные освобождения памяти они решают. Есть еще разыменование нулевых указателей, которые и в безопасных языках Java, C#, Oberon имеются. Кроме того, есть еще и другие ошибки с памятью.