Ваш оператор if
выглядит неправильно: имя newbuff
указывает на указатель, и его размер будет равен 4 в 32-разрядной системе или 8 в 64-разрядной системе. О, правильно, после того, как я написал, что вы отредактировали ваш код, чтобы показать определение newbuff
в виде массива. Но все равно.
throw
может аварийно завершить работу, если нет обработчика. В этом случае стандарт не требует перемотки стека (уничтожение локальных объектов).
Кажется, что BUFFER_TOO_SMALL
- это константа, вероятно, целое число. Вы не должны бросать целые числа (если вы действительно не знаете, что делаете). Бросай std::exception
объектов, например std::runtime_error
.
Редактировать: Ваш обновленный код показывает, что вы ловите int
. Это означает, что ваши заглавные константы не int
. Но совет остается в любом случае.
Существует также проблема стиля, использование ALL UPPERCASE для константы. Не. Это Java-изм: в C и C ++ по соглашению все прописные буквы предназначены только для макросов и макросов.
Приветствия & hth.,