Я в настоящее время перекодировал malloc()
и должен иметь дело с случаем, когда вызывающий объект вычисляет размер буфера, который приводит к отрицательному значению, которое затем передается в malloc()
?C - Перекодирование malloc() как определить отрицательный размер, используемый в вызове?
Я знаю, что параметр size_t
, так что беззнаковый int я прав?
Таким образом, я хотел проверить размер, который будет передан на мой перекодированный malloc()
, но как я могу это сделать?
Потому что, если я передаю отрицательный параметр, он будет изменен на случайное число, например 18446744073709551613
. Я просто получаю.
Итак, мой вопрос: как я могу проверить, является ли параметр отрицательным, когда параметр является size_t
(без знака int), он будет напрямую преобразован в астрономическое значение, нет?
Это не случайно, '-1' всегда будет [max unsigned value для этого типа] (http://stackoverflow.com/a/22801135/1708801) –
Нет смысла проверять, не имеет ли значение unsigned int отрицательно –
«Как проверить, является ли параметр отрицательным» - его 'size_t'; по определению и неподписанному интегральному типу, поэтому он уже не отрицателен к моменту его получения. – WhozCraig