Насколько я понимаю, это означает, что новые могут быть реализованы в терминах malloc, который позволяет запрашивать нулевые запросы. Вы не можете много сделать с ними, поскольку, как отмечено в цитате ниже, разыменование такого указателя является неопределенным поведением.
Мы можем найти обоснование в проекте C++ стандарта сноске 35, на которую ссылается из раздела 3.7.4.1
[basic.stc.dynamic.allocation]:
[...] Даже если размер запрошенное пространство равно нулю, запрос может выйти из строя. Если запрос завершен, возвращаемое значение должно быть значением ненулевого указателя (4.10) p0, отличным от любого возвращаемого значения p1 , если только это значение p1 не было передано оператору delete. Эффект разыменования указателя, возвращаемый как запрос на нулевой размер, не определен.
и сноска 35 говорят:
Цель состоит в том, чтобы оператор нового() осуществимый, вызвав зЬй :: таНоса() или зЬй :: calloc(), поэтому правила в основном . C++ отличается от C, требуя нулевого запроса, чтобы вернуть ненулевой указатель.
Из проекта C11 стандартные секции 7.22.3
функции управления памятью:
[...] Если размер запрошенное пространство равно нулю, поведение определяется реализацией: возвращается нулевой указатель или поведение такое, как если бы размер был некотором ненулевым значением, за исключением того, что возвращаемый указатель не использовался для доступа к объекту.
Вы не можете много сделать с ними. Насколько я знаю, это, по сути, позволить новым реализовать в плане malloc. –