void f() { // Выделение памяти для num элементов типа MyType pair p = get_temporary_buffer(num); if (p.second == 0) { // Выделить память для элементов вообще не удалось ... } else if (p.second < num) { // Не удалось выделить достаточно памяти для num элементов. // Однако и эту память нужно освободить! ... } // Обработка ... // Освобождение временной выделенной памяти if (p.first != 0) { return_temporary_buffer(p.first); } }