Новая формулировка устраняет это противоречие, явно оставляя на усмотрение реализации, вызывается ли функция освобождения в случае удаления нулевого указателя.

вольно ясно, что удаление нулевого указателя не имеет никакого эффекта. Действительно, это прямо указано вc++03 это:§5.3.5/2В любом из вариантов, если значение операнда удаления является нулевым указателем, операция не имеет никакого эффекта.

Однако в нынешнем

черновой вариант за это предложение, кажется, отсутствует. В остальной части проекта я мог только найти предложения о том, что произойдет, если операндc++0xудалить выражение не является константой нулевого указателя. Удаляет ли нулевой указатель, все еще определенный ви если да, то где?c++0xПримечания:

Существуют значительные косвенные доказательства того, что он все еще четко определен.

Во-первых, есть два предложения в

 основываясь на этом§5.3.5/2В первом варианте (объект удаления) значение операнда удаления может быть значением нулевого указателя, ...

а также

Во второй альтернативе (удаление массива) значение операнда удаления может быть значением нулевого указателя или ...

Они говорят, что операнд может быть нулевым, но сами по себе фактически не определяют, что произойдет, если это так.

Во-вторых, изменив значение

 это серьезное серьезное изменение, и комитет по стандартам вряд ли внесет это конкретное изменение. Кроме того, нет упоминания об этом существенном изменении в Приложении по совместимости (Приложение C)delete 0 черновой вариант. Приложение C, однако, является Информационным разделом, поэтому оно не имеет никакого отношения к толкованию стандарта.c++0xС другой стороны, тот факт, что удаление нулевого указателя не должно иметь никакого эффекта, подразумевает дополнительную проверку во время выполнения. В большом количестве кода операнд никогда не может быть нулевым, поэтому эта проверка во время выполнения противоречит принципу нулевых издержек. Может быть, комитет просто решил изменить поведение, чтобы привести стандарт c ++ в большее соответствие с заявленными целями разработки языка.

5.3.5 / 7 говорит:

Ответы на вопрос(2)

Ваш ответ на вопрос