Что означает "должен" в спецификациях?
На интернет-форуме я вижу, что пользователь говорит о realloc
и POSIX. Он цитирует спецификацию, говоря:
realloc()
функция освобождает старый объект, на который указываетptr
и вернуть указатель на новый объект, размер которого указан по размеру.
Затем указанный пользователь указывает, что в спецификации используется слово "должен" вместо "должен". Он уточняет, что из-за этого реализация realloc
может отличаться на разных платформах, а затем предлагает избегать использования realloc
чтобы не было утечек памяти.
Я не родом с английского, поэтому могу ошибаться, но мое понимание "будет" отличается от того, что было сказано выше. Для моего (возможно, ошибочного) понимания "должен" описывается императив; оно лежит где-то между "должен" и "воля" - поэтому это настолько сильный императив, что он почти отказывается признать, что может произойти что-то противоположное. Все знают эти строки:
Я Господь, Бог твой. У тебя не будет других богов до меня. Ты не должен делать тебе никакого изображения. Ты не будешь принимать имя Господа, Бога твоего, напрасно. Помни день субботний, чтобы святить его; Почитай отца твоего и мать твою. Не убивай. Не прелюбодействуй. Не укради. Не произноси ложного свидетельства на ближнего твоего. Не желай.
Я понимаю, что это абсолютные императивы, которые не допускают непослушания; и таким же образом я интерпретировал слово "будет" в спецификации POSIX и в любом другом подобном тексте.
Было ли мое понимание правильным? Или это было не так?
В частности - разрешает ли слово 'real' реализациямrealloc не освобождать старый объект?