обнаружить ошибку переполнения / переполнения во время выполнения? - PullRequest
2 голосов
/ 04 января 2012

Из любопытства, есть ли способ обнаружить ошибки переполнения / переполнения для чисел во время выполнения?если нет, то почему нет?Я знаю, что это может быть ожидаемое поведение, но все равно будет полезно, если я использую Visual Studio 2010, если что-то изменится

edit: например:

unsigned int a= 2;
unsigned int b= 3;
a -=b; //<- underflow

Ответы [ 2 ]

4 голосов
/ 04 января 2012

C ++ является относительно легким языком и поэтому не обеспечивает никакой автоматической проверки во время выполнения для переполнения / «недополнения».Ваш код, как правило, должен быть написан таким образом, чтобы такие вещи не происходили, и в случаях, когда вы имеете дело с внешним вводом, вам нужно защищать вводы кодом, специально разработанным для конкретного защищаемого вами случая.

2 голосов
/ 04 января 2012

Visual Studio включает реализацию класса SafeInt , который по умолчанию вызовет исключение при переполнении / недостаточном заполнении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...