Возник такой вопрос. Создаем поток, ставим ему режим PTHREAD_CANCEL_ASYNCHRONOYS. Далее где-то в потоке выделяем память char *buf = new char[100500];
Получается что возможна ситуация, когда посланная команда прерывания потока попадет между вызовом new и присвоением ее результата в переменную buf. Тогда получается память уже выделена, но улетаем в обработчик останова с мусором в buf - имеем утечку. Что-то я сомневаюсь что система/компилятор могут сами разруливать такое.