Хорошо, есть пара предупреждений Valgrind, которые я получаю с 3.4, но важно только первое.
new / new [] не удалось и должен выдать исключение, но Valgrind не может выдать исключения и поэтому отменяет. К сожалению.
new
выдает исключение, когда ему не хватает памяти (если вы не используете новую версию nothrow). К сожалению, Valgrind не может справиться с этим и сдается до завершения вашего кода. Поскольку valgrind прерывается, ваш код для освобождения памяти никогда не выполняется, что проявляется в утечках памяти.
Тем не менее, вы не обрабатываете случай, когда генерируются новые броски, поэтому ваша программа умрет из-за необработанного исключения, если у вас закончится память. Вам нужно обернуть свой код блоком try / исключением.