Что означает «должен» в спецификациях? - PullRequest
0 голосов
/ 24 мая 2019

На интернет-форуме я вижу пользователя , говорящего о realloc и POSIX . Он цитирует спецификацию , говоря:

Функция realloc() освобождает старый объект, на который указывает ptr, и возвращает указатель на новый объект, размер которого указан в размере.

Указанный пользователь затем указывает, что в спецификации используется слово ' must ' вместо ' must '. Он уточняет, что из-за этого реализация realloc может отличаться на разных платформах, а затем предлагает избегать использования realloc во избежание утечек памяти.

Я не являюсь родным для английского языка, поэтому я могу ошибаться, но мое понимание ' ' отличается от того, что было сказано выше. По моему (возможно, ошибочному) пониманию « должен » описывает императив; оно находится где-то между ', следует ' и ' будет ' - так что это настолько сильный императив, что он почти отказывается признать, что может произойти что-то противоположное. Все знают эти строки:

Я Господь, Бог твой. У тебя не будет других богов до меня. Ты не должен делать тебе никакого изображения. Ты не будешь принимать имя Господа, Бога твоего, напрасно. Помни день субботний, чтобы святить его; Почитай отца твоего и мать твою. Не убивай. Не прелюбодействуй. Не укради. Не произноси ложного свидетельства на ближнего твоего. Не желай.

Я понимаю, что это абсолютные императивы, которые не допускают непослушания; и таким же образом я интерпретировал слово «» в спецификации POSIX и любом другом подобном тексте.

Было ли мое понимание правильным? Или это было не так?

В частности - позволяет ли слово ' ' реализациям realloc 'не освобождать старый объект?

...